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
zend
post
Post #2





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

Posty w temacie


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: 17.10.2025 - 08:21