Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ustawienia w __construkt czy bezpośrednio w klasie?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Apocalyptiq
Z PHP pracuje już z rok, ale dopiero teraz zaczynam wtajemniczać się w klasy. Chciałem zapytać, do czego wykorzystuje się funkcję __construct - wiem, że jest wywoływana w momencie tworzenia egzemplarza obiektu, ale czym różni się wrzucenie jakichś początkowych zmiennych/działań bezpośrednio do klasy, a do tej funkcji __construct? Np. taki kod:
Kod
class foo{function __construct()
    {
    $this->text = 'Cześć, jestem klasa';
    }
}

a taki:
Kod
class foo{
var $text = 'Cześć, jestem klasa';
}
? Czy po prostu wrzuca się tam jakieś działania, których bezpośrednio w klasie nie można wykonać (np. echo)?
LBO
Bardziej chodzi o to:
  1. <?php
  2. class foo{
  3. function __construct($text)
  4. {
  5.    protected $text;
  6.  
  7.    $this->text = $text;
  8. }
  9. }
  10.  
  11. $hello = 'Cześć, jestem klasa';
  12. $f = new foo($hello);
  13. ?>
Apocalyptiq
Czyli do tworzenia nowych obiektów między innymi?
doseo
Konstruktor wykonuje zadania niezbędne dla dalszej pracy z obiektem. Pamiętaj także, że nie jest on metodą wykonywaną po stworzeniu obiektu ale współuczestniczy w tworzeniu obiektu.
mecenas
Cytat(Apocalyptiq @ 23.10.2008, 14:58:56 ) *
Czyli do tworzenia nowych obiektów między innymi?


Jak sama nazwa wskazuje - konstruktor służy do konstrukcji, czyli do tworzenia obiektu. Do innych celów tworzy się metody klasy.

Istnieją różne typy konstruktorów, ale nie jestem specem od php, więc nie bede ryzykował siania herezji winksmiley.jpg
Sedziwoj
I przy okazji jak już używasz __construct() to nie:
  1. <?php
  2. class foo{
  3.    var $text = 'Cześć, jestem klasa';
  4. }
  5. ?>

a
  1. <?php
  2. class foo{
  3.    protected $text = 'Cześć, jestem klasa';
  4. }
  5. ?>


P.S. LBO dodaj właściwość do swojego przykładu, bo chyba ją zjadłeś. (wiem że działa, ale nie jest to coś czego powinno się uczyć)
LBO
Cytat(Sedziwoj @ 24.10.2008, 11:05:11 ) *
LBO dodaj właściwość do swojego przykładu


tak jest - teraz będzie smigać biggrin.gif
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.