Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Róznica między klasami
gothye
post
Post #1





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


witam
zaczynam OOP ale napotałem sie na 2 rózne zapisy klas PHP :


  1. class test
  2. {
  3. private static $foo = 'hello' ;
  4.  
  5. public function pokaz()
  6. {
  7. echo self::$foo ;
  8. }
  9. // nie dziala
  10. public function __construct()
  11. {
  12. echo 'hello' ;
  13. }
  14.  
  15. // nie dziala
  16. public function __destruct()
  17. {
  18. echo 'bye' ;
  19. }
  20. }
  21.  
  22. test::pokaz() ;
  23.  
  24. /*********** druga clasa *************/
  25. class test
  26. {
  27. private $foo = 'hello' ;
  28.  
  29. public function pokaz()
  30. {
  31. echo self::$foo ;
  32. }
  33. // dziala
  34. public function __construct()
  35. {
  36. echo 'hello' ;
  37. }
  38.  
  39. // dziala
  40. public function __destruct()
  41. {
  42. echo 'bye' ;
  43. }
  44. }
  45.  
  46. $test = new test();
  47. $test->pokaz();


może ktoś wyjaśnić gdzie i dlaczego sie stosuje zapisy ? i który jest prawidłowy ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




gothye, przeczytaj do końca rozdział poświęcony podstawom oop z książki/kursu z którego się uczysz a sam znajdziesz odpowiedź ...
Go to the top of the page
+Quote Post
gothye
post
Post #3





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


nie korzystam z żadnej książki ,dlatego pytam na forum licząc na pomoc (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




A z czego się uczysz ? Z manuala ? To tam jest na pewno wyjaśnione (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
gothye
post
Post #5





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


skoro niewiesz ,lub nie umiesz odpowiedzieć to moze chociaż podasz link ?
Go to the top of the page
+Quote Post
Spawnm
post
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Sam nie potrafisz korzystać z manuala i szukajek ?
Poszukaj bo pytasz o podstawy.
Go to the top of the page
+Quote Post
JohnnyB
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

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


Cytat(gothye @ 31.05.2010, 18:05:39 ) *
może ktoś wyjaśnić gdzie i dlaczego sie stosuje zapisy ? i który jest prawidłowy ?


obie klasy są jak najbardziej prawidłowe (IMG:style_emoticons/default/smile.gif)

różnica tkwi sposobie wywołania - w pierwszym przykładzie wywołanie jest statyczne, a więc nie jest w ogóle tworzony obiekt, więc nie ma okazji do wywołania konstruktora i destruktora.
Go to the top of the page
+Quote Post
zegarek84
post
Post #8





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(gothye @ 31.05.2010, 18:44:06 ) *
...to moze chociaż podasz link ?
Classes and Objects

niestety prawie wszystko w manualu jest po angielsku... jednak nie musisz dobrze znać angielski by rozumieć dokumentację - czytaj o funkcjach, w komentarzach i troche google zanim się przestawisz... każdy ogląda filmy to wyłącz sobie napisy - szybciej się przestawisz z myśleniem na angielski - co nie znaczy, że będziesz umiał mówić po angielsku - jednak szybciej nauczysz się go rozumieć...
Go to the top of the page
+Quote Post
zend
post
Post #9





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Pierwszy sposób nie ma prawa zadziałać, bo metoda którą podałeś nie jest statyczna
  1. class x{
  2. public static function pokaz() {}
  3. }
  4.  
  5. x::pokaz();


Statyczne wywołania są przydatne gdy nie chcesz / nie możesz utworzyć obiektu, dane statyczne mogą być współdzielone pomiędzy różnymi instancjami tej samej klasy. Jest to przydatna własność, ponieważ możesz np statycznie nawiązać połączenie w modelu, a każdy kolejny model będzie korzystał z tej samej instancji połączenia. Jest to dobre rozwiązanie gdy korzystasz z jednej bazy i nie chcesz się martwić o przekazywanie połączenia.

Jeśli natomiast korzystasz z dwóch baz, to współdzielenie jednego połączenia nie jest czymś czego oczekujesz ponieważ każdy model może chcieć skorzystać z innej bazy, wtedy korzystasz z niestatycnych metod, ale połączenie do bazy musisz ustawić sam, np jako parametr w konstruktorze

Ten post edytował zend 31.05.2010, 23:16:59
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.09.2025 - 21:29