Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z przykładem
falfin
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 21.02.2007

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


Witam, dziś zacąłem się uczyć obiektowego php. Korzystam z książki "PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie trzecie". Jednym z pierwszych przykładów jest coś takiego:
  1. <?php
  2. class nazwaklasy
  3. {
  4. function _constructor($param)
  5. {
  6. echo "konstruktor wywołany z parametrem $param<br />";
  7. }
  8. }
  9. $a = new nazwaklasy('pierwszy');
  10. $a = new nazwaklasy('drugi');
  11. $a = new nazwaklasy();
  12. ?>


W książce jest napisane że powinno to wyświetlić wynik:
konstruktor wywołany z parametrem pierwszy
konstruktor wywołany z parametrem drugi
konstruktor wywołany z parametrem

Jednak u mnie nie wyświetla się nic! W czym problem?
Aha i jeszcze jedno może mi ktoś wytłumaczyć łopatologicznie do czego służy funkcja _construct?
Przeczytałem wytłumaczenie z ksiązki jednak jest ono troche zawiłe i niewiem czy wszystko zrozumiałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
gebp
post
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


  1. <?php
  2. class nazwaklasy
  3. {
  4. function nazwaklasy($param)
  5.  {
  6.  echo "konstruktor wywołany z parametrem $param<br />";
  7.  }
  8. }
  9. $a = new nazwaklasy('pierwszy');
  10. $a = new nazwaklasy('drugi');
  11. $a = new nazwaklasy();
  12. ?>
Go to the top of the page
+Quote Post
Lynks
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.10.2006
Skąd: Łódź

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


Nie _constructor tylko __construct (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zwróć również uwagę na podwójny podkreślnik.

A co do drugiej części pytania to: Konstruktor

Pozdrawiam

Ten post edytował Lynks 4.03.2007, 21:58:16
Go to the top of the page
+Quote Post
falfin
post
Post #4





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 21.02.2007

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


Dziekuje! obydwie odpowiedzi były poprawne (jednak bardziej chodziło mi o to o czym napisał Lynks PODWÓJNE podkreślenie!) Mam jeszcze jedną prośbe: prosze o proste wytłumaczenie construct i destruct.
Go to the top of the page
+Quote Post
Lynks
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.10.2006
Skąd: Łódź

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


__construct - metoda, która jest wykonywana przy tworzeniu nowego obiektu
__destruct - metoda, która jest wykonywana gdy obiekt kończy swój żywot

Prościej chyba się nie da (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jak już napisałem w poście powyżej, jest to całkiem przyjemnie wytłumaczone w PHPEdi, razem z prościutkim przykładem. __construct() __destruct()

Pozdrawiam

PS. Wyszukiwarka PHPEdi coś szwankuje

Ten post edytował Lynks 5.03.2007, 00:34:58
Go to the top of the page
+Quote Post
plisek
post
Post #6





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 28.08.2005

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


konstruktor to metoda wywoływana w chwili tworzenia instancji danej klasy, czyli obiektu.
wykonuje się zawsze. Powody jednak moga być rózne.
Jezeli tworzymy obiekt jakiejś klasy i "na wejściu" chcemy mu ustawić jakieś parametry wtedy tak naprawde jest on w pełni wykorzystywany.

na przykład:
mamy pewną klasę Osobnik (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. <?php
  2. class Osobnik{
  3.  
  4.  $imie;
  5.  $plec;
  6.  
  7.  function __contruct($imie, $plec){
  8.  $this->imie=$imie;
  9.  $this->plec=$plec;
  10.  }
  11. }
  12. ?>

i teraz utworze sobie obiekt
  1. <?php
  2. $kobieta= new Osobnik('Ala', 'k');
  3. ?>


to odrazu w chwili inicjowania obiektu nadałem mu imie i plec, przekazując wartości poprzez kontruktor

można także bezpośrednio przypisac wartości zmiennym np
  1. <?php
  2. class Osobnik{
  3.  
  4.  $imie='Pola';
  5.  $plec='k';
  6.  
  7.  function __contruct(){
  8.  }
  9. }
  10. ?>


i w chwili tworzenia obiektu tej klasy, wartości te bedą przypisane do zmiennych
  1. <?php
  2. $kobieta = new Osobnik();
  3. ?>

w tym wypadku, konstruktor tez jest wywoływany, ale nic nie robi

mam nadzieje ze teraz jest jasne po co nam konstruktory (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

co do destruktorów, to rzecz ma sie podobnie
wywolywany jest z chwila niszczenia danego obiektu.
możemy to jednak zrobić sami w odpowiednim dla nas momencie, właśnie dzięki metodzie __destruct()
Go to the top of the page
+Quote Post
falfin
post
Post #7





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 21.02.2007

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


Wielkie dzięki! Bardzo mi pomogliście. Pozdrawiam
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: 23.08.2025 - 02:12