Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] OOP - pytanie o konstruktor, __construct - możliwie najprostszy czy może być rozbudowany?
kreatiff
post
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Witam. Zaczynam raczkować w OOP, i natrafiłem na taką wątpliwość.
Czy mógłbym prosić o prostą wykładnię, które podejście jest bardziej "prawidłowe" dla poniższego przykładu (o ile którekolwiek jest prawidłowe (IMG:style_emoticons/default/wink.gif) )?
Chodzi mi o to, czy dla zasady konstruktor powinien być możliwie jak najmniej skomplikowany i dalsze zadania na atrybutach powinno się wykonywać w osobnych metodach, czy nic nie stoi na przeszkodzie, by już w konstruktorze wykonywać działania?

Co lepsze? Ta klasa:
  1. class A {
  2. private $zmienna = '';
  3. private $info = '';
  4.  
  5. public function __construct($zmienna) {
  6. $this->zmienna = $zmienna;
  7. $this->info = $info;
  8. if ( $this->zmienna == 'test' ) $this->info = 'ok';
  9. else $this->info = 'coś nie gra';
  10. }
  11.  
  12. public function wyswietl() {
  13. return $this->info;
  14. }
  15. }
czy może ta klasa:
  1. class A {
  2. private $zmienna = '';
  3. private $info = '';
  4.  
  5. public function __construct($zmienna) {
  6. $this->zmienna = $zmienna;
  7. $this->info = $info;
  8. }
  9.  
  10. private function sprawdz() {
  11. if ( $this->zmienna == 'test' ) return 'ok';
  12. else return 'coś nie gra';
  13. }
  14.  
  15. public function wyswietl() {
  16. return $this->sprawdz();
  17. }
  18. }
Proszę nie zwracać uwagi na bezsensowny przykład, możliwy do rozwiązania w 1 linijce w sposób proceduralny. No chyba, że za pomocą klasy ten problem powinien być rozwiązany w kompletnie inny sposób. Wynik końcowy ma za zadanie zwrócić 'ok', albo 'coś nie gra', w zależności od parametru początkowego przy tworzeniu obiektu klasy A.
  1. $a = new A('test');
  2. echo 'Info: '. $a->wyswietl(); // wyświetli 'ok'
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Ze głupi przykład to wiem. Chodziło o pokazanie co mam na myśli.
Rozumiem, ze to:
  1. return $this->zmienna == 'test';

zwraca boolean?
(dodano: musi zwracać true/false, bo co innego by miało zwracać (IMG:style_emoticons/default/wink.gif) )

Dziękuję Sephirus za wyjaśnienia. Przyznam szczerze, że po przerobieniu rozdziału PHP i MySQL Welling/Thomson o obiektowym, niewiele z tego zajarzyłem. Dopiero przykłady w Internecie mi nieco rozjaśniły.
I właśnie takie posty, które rozwiewają wątpliwości, których nie znajdziesz tak łatwo w książce, bo ilu programistów, tyle rozwiązań.
Na samym początku przygody z obiektowym miałem w ogóle problem by wyłapać jego sens. Zbyt długo uczyłem się proceduralnego podejścia do php, zamiast od razu chwytać się OOP.
Teraz zaczyna mi się to porządkować, staje się sensowne i logiczne. Ale właśnie, wygląda mi na to, że trzeba wypracować sobie swoje podejście, bo nie ma na to gotowego schematu. A to wymaga ćwiczeń.
Oczywiście wątpliwości się mnożą wraz z kolejnymi przykładami, które próbuję sobie rozwiązać czy stworzyć. No ale nikt nie mówił, że będzie łatwo (IMG:style_emoticons/default/smile.gif)

Dziękuję wszystkim za pomoc.

Ten post edytował kreatiff 28.11.2012, 17:25:30
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: 14.10.2025 - 21:18