Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php5] wszystko jest obiektem
Apo
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


nudziło mi sie i postanowiłem napisać coś dziwnego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2.  
  3. class Box {
  4.  
  5. private $box;
  6.  
  7. public function __construct($value = null)
  8. {
  9. if(!is_null($value))
  10. $this->box = $value;
  11. }
  12.  
  13. public function __call($method, $args)
  14. {
  15. if($this->box)
  16.  array_unshift($args, $this->box);
  17.  
  18. return call_user_func_array($method, $args);
  19. }
  20.  
  21. }
  22.  
  23. $ciag = new Box('ciag');
  24. echo $ciag->substr(0, 2); // zwroci "ci"
  25. echo $ciag->strtoupper(); // zwroci "CIAG"
  26.  
  27. $box = new Box;
  28. echo $box->strlen('cos dlugiego'); // zwroci 12
  29.  
  30. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




widac musialo ci sie bardzo nudzic...

Czemu to ma sluzyc? Jaki jest tego cel? Wwalane na sile obiektowki ?
Przeciez to ani nie jest lepsze, ani szybsze ani tym bardziej optymalne od normalnego wywolania strlen, strupper i innych funkcji.
Go to the top of the page
+Quote Post
Apo
post
Post #3





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


w pogoni za Java
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
w pogoni za Java
No to Twoj kod jest bardzo cienki, albo nie znasz javy. A gdzie wyjątki? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

A na powaznie: naucz sie odrozniac "pogoń" od "doczepiania sobie kuli do nogi" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Apo
post
Post #5





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


e tam empathon twierdzi ze to jest "Zimny łokieć oop" ;]
Go to the top of the page
+Quote Post
empathon
post
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

Ostrzeżenie: (0%)
-----


Mi to przypomina ruby w którym analogicznie można działać na obiekcie.
Do normalnego użytku z pewności jest bezsensowane ale do czegoś musi się przydać. Trzeba pokombinować bo według mnie jest dość sprytne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Parę dodatkowych metod i będzie magia (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
starach
post
Post #7





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Eee pomysł ciekawy ale jakoś specjalnie nie wiem do czego to się ma przydać wywoływanie funkcji php z jakiegoś obiektu ? Po co wywarzać otwarte drzwi ?
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Tez mi sie wydaje "a po co to?".

Mozna by np. uzyc na tym funkcji mysql_* i nie przekazywac wszedzie resource polaczenia, czy wyniku zapytania ale:
- brak podpowiadania skladni
- dlugosc kodu bedzie wieksza
- mamy PDO
itp.


W kazdym badz razie czekam na jakies praktyczne wykorzystanie.
Go to the top of the page
+Quote Post
tuner
post
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 10.12.2004

Ostrzeżenie: (0%)
-----


Koncepcja rozszerzenia obiektówki PHP jest ciekawym pomysłem. Czekam na rozwiązania, które mogłyby być zastosowane w praktyce.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@Apo - Powtórzę kolegów - podczepianie na siłę. Aby jednak nie być jednostronnym, to powiem, że sam napisałem podobne metody, ale tylko w niektórych obiektach i tylko w takich, które wykonywały np. strtoupper(), ucfirst() i dodatkowo wykonywały kilka innych czynności.

Pozdrawiam.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Ha!
Jako ze nie kodowalem dawno w php (ruby + java) i teraz wrocilem do php to brakowalo mi pelnej obiektowosci, a raczej wywolywania metod na obiektach

$tablica->count()

zamiast wywolywania funkcji z argumentem

count( $tablica)

I sobie o tym poscie przypomnialem, tyle ze myslalem ze ta mozliwosc jest dolaczana do wszystkich typow bazowych (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) A takto to szkoda czasu na ciagle meczenie sie z new Box().
Go to the top of the page
+Quote Post
Apo
post
Post #12





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


@dr_bonzo zawsze możesz do konstruktora wrzucić tworzenie obiektu, jest to wygodne jeśli jakiegoś FW używasz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
hwao
post
Post #13


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Można dodać rzutowanie typów wtedy skrypt robi to sam z Ciebie. (przy deklaracji, ustala sie tym i przy return zawsze daje (int) ect.)

Wg mnie pomysł bardzo ciekawy, może nie koniecznie użyteczny, ale moim zdaniem takie coś jest dużo lepsze niż 30 system szablonów z taka sama oklepana składnia.
Go to the top of the page
+Quote Post
sf
post
Post #14





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 12.05.2007, 23:15:22 ) *
Mozna by np. uzyc na tym funkcji mysql_* i nie przekazywac wszedzie resource polaczenia, czy wyniku zapytania ale:
- brak podpowiadania skladni
- dlugosc kodu bedzie wieksza
- mamy PDO


Wydaje mi się, że do curl byłoby bardzo dobre (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Można by było od razu dodać metodę do tworzenia danych do POST czy wyciąganie informacji o ciastkach.

  1. <?php
  2. class Curl
  3. {
  4. private $rRes;
  5.  
  6.  
  7. public function __construct($sURL = NULL)
  8. {
  9. $this->rRes = is_null($sURL) ? curl_init() : curl_init($sURL);
  10. }
  11.  
  12.  
  13. public function __call($sMethod, $aArgs)
  14. {
  15. if($aArgs[0] == CURLOPT_POSTFIELDS) {
  16. $this->postFields($aArgs[1]);
  17. }
  18.  
  19. array_unshift($aArgs, $this->rRes);
  20.  
  21. return call_user_func_array('curl_' . $sMethod, $aArgs);
  22. }
  23.  
  24.  
  25. private function postFields(&$aData)
  26. {
  27. foreach($aData as $sKey => $mValue) {
  28. $aTmp[] = $sKey . "=" . urlencode($mValue);
  29. }
  30.  
  31. $aData = implode('&', $aTmp);
  32. }
  33. }
  34. ?>


  1. <?php
  2. require_once 'Curl.php';
  3.  
  4. $oCurl = new Curl('http://www.php.net');
  5. $oCurl->setopt(CURLOPT_POST, 1);
  6. $oCurl->setopt(CURLOPT_POSTFIELDS, array('post' => 'test'));
  7. $oCurl->setopt(CURLOPT_RETURNTRANSFER, 1);
  8. echo $oCurl->exec();
  9. $oCurl->close();
  10. ?>


Ten post edytował sf 28.05.2007, 12:26:49
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:27