Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z przykładem
Forum PHP.pl > Forum > Przedszkole
falfin
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 smile.gif
gebp
  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. ?>
Lynks
Nie _constructor tylko __construct smile.gif

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

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

Pozdrawiam
falfin
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.
Lynks
__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 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
plisek
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 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 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()
falfin
Wielkie dzięki! Bardzo mi pomogliście. Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.