Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]PHP sens funkcji...
LoBo0sw
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 12.04.2010

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


Przeglądam sobie php.pl http://php.pl/phppl/Wortal/Artykuly/PHP/Po...adowe-statyczne
by poczytac o OOP i mam następujące pytanie.
Jaki jest sens funkcji
  1. public function getName(){
  2. Return $this->name;
  3. }


Czy ona jest czy jej nie ma to wyświetla mi 012.
w zasadzie oprócz tego, że jest napisana, to nigdzie nie jest wykorzystana, więc po co w zasadzie ten getName() ? praser php go jakos wykorzystuje ?

Klasa:
  1. abstract class Dog{
  2. private static $nextId = 0;
  3. /* Identyfikator, który znajduje się na obroży, każdy pies powinien mieć unikalne id */
  4. private $id;
  5. private $name;
  6.  
  7. public function __construct($name){
  8. $this->name = $name;
  9. $this->setId();//ustawienie identifikatora
  10. }
  11.  
  12. public function getName(){
  13. Return $this->name;
  14. }
  15.  
  16. public function getId(){
  17. Return $this->id;
  18. }
  19.  
  20. private function setId(){
  21. $this->id = self::$nextId++;
  22. }
  23.  
  24. public static function getNextId(){
  25. return self::$nextId;
  26. }
  27. }
  28.  
  29. class Basset extends Dog{
  30. //jakieś metody specjalizujące
  31. }
  32.  
  33. $reksio = new Basset ('Reksio');
  34. echo $reksio->getId();//wyświetla "0"
  35. $edek = new Basset ('Edek');
  36. echo $edek->getId();//wyświetla "1"
  37. echo Dog::getNextId();//wyświetla "2"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
szalek01
post
Post #2





Grupa: Zarejestrowani
Postów: 129
Pomógł: 17
Dołączył: 17.09.2012

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


To jest tylko przykład. Zmienna jest private dlatego by ją zmienić (setName) lub pobrać (getName) używasz metod. W taki sposób zabezpieczasz swój obiekt Dog, kontrolujesz jakie zmienne i w jaki sposób są pobierane i zmieniane, wiąże się to bezpośrednio z pojęciem obiektowości, a w czasie programowania np w Symfony używasz tego cały czas.


--------------------
PDO nie gryzie....
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Poczytaj o getterach i setterach. W skrócie chodzi o to, aby właściwości nie były publiczne. Settery czuwają nad tym aby w dana właściwość zawierała to co Ty chcesz (np. nazwę, a nie obiekt). Poczytaj zrozumiesz...
Go to the top of the page
+Quote Post
LoBo0sw
post
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 12.04.2010

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


ok, ale w książkach na ogół tez sa takie deklaracje, i nie umiem pojąc po co są takie funkcje, skoro w zasadzie są deklarowane, a nigdzie nie używane. Rozumiem, że tylko bezpieczeństwo, tak ? Bo bez nich też skrypty działają.
Dopiero poznaję OOP więc prosze o wyrozumiełość wink.gif


@up:
ale tutaj czy to jest nazwane getNazwa czy pobierzNazwa nie ma znaczenia, a gettery i settery to chyba __set(), __get(), które tutaj nie są użyte, tak ?

Ten post edytował LoBo0sw 27.09.2012, 19:43:26
Go to the top of the page
+Quote Post
webdice
post
Post #5


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Tu masz stosunkowo fajnie to opisane.

PS. Przyjęło się nazwy set* oraz get*, ale jak sobie to nazwiesz, to Twoja sprawa.
Go to the top of the page
+Quote Post
Niktoś
post
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Poczytaj pod nazwą akcesory- pewnie zajdziesz wiele fajnych przykładów.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 08:15