clasă implicită declarație variabilă în php?

voturi
2

M-am uitat la un anumit cod și am un timp de greu de lucru din declarație de variabilă în clase php. Mai precis, se pare că acest cod ma uit la nu declară variabilele de clasă înainte de a le utilizează. Acum, acest lucru poate fi de așteptat, dar eu nu pot găsi orice informații care afirmă că este posibil. Deci, te-ai aștepta acest lucru:

class Example
{

    public function __construct()
    {
        $this->data = array();
        $this->var = 'something';

    }

}

a munci? și face acest lucru creează aceste variabile pe instanța de clasă care urmează să fie utilizate în continuare?

Întrebat 25/06/2010 la 01:06
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
2

Deci , te-ai aștepta acest lucru: (Exemplu de cod) pentru a lucra?
Da. Este practică destul de rău (cel puțin face C ++ mi pielea de găină), dar nu m - ar surprinde câtuși de puțin. A se vedea exemplul 2 în pagina următoare pentru un exemplu de utilizare o altă clasă , fără obligația de ao declara în prealabil. http://www.php.net/manual/en/language.oop5.basic.php va arunca o eroare dacă E_STRICT este activată.

Și face acest lucru creează aceste variabile pe instanța de clasă care urmează să fie utilizate în continuare?

Da. Nu este PHP distractiv? Venind dintr-un fond # C ++ / C, PHP a luat ceva timp să crească pe mine cu tastarea ei foarte slab, dar are avantajele sale.

Publicat 25/06/2010 la 01:17
sursa de către utilizator

voturi
3

Aceasta funcționează la fel ca și o declarație de variabilă normală ar funcționa:

$foo = 'bar'; // Created a new variable

class Foo {
    function __construct() {
        $this->foo = 'bar'; // Created a new variable
    }
}

clase PHP nu chiar sunt aceleași ca și în alte limbi, în cazul în care variabilele membre trebuie să fie specificate ca parte a declarației de clasă. Membrii clasei PHP pot fi create în orice moment.

Acestea fiind spuse, ar trebui să declare variabila ca public $foo = null;în declarația de clasă, în cazul în care ar trebui să fie membru permanent al clasei, să -și exprime în mod clar intenția.

Publicat 25/06/2010 la 01:17
sursa de către utilizator

voturi
1

Asta e complet funcțională, deși opiniile vor fi diferite. De la crearea variabilelor membru al clasei sunt în constructor, acestea vor exista în fiecare instanță a obiectului, cu excepția cazului șters.

Este convențional să declare variabile membru al clasei cu comentarii informative:

class Example
{
    private $data;  // array of example data

    private $var;   // main state variable

    public function __construct()
    {
        $this->data = array();
        $this->var = 'something';
    }
}
Publicat 25/06/2010 la 01:22
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more