selv vs. dette i PHP

PHP understøtter klasser og andre objektorienterede konstruktioner. selvdetteKan bruges i statiske funktioner Ja Ingen tilgængelig klassevariabel og metoder med selv:: $ this-> (Bemærk, at PHP> 5.3 tillader brugen af ​​$ dette med statiske variabler, brug $ this :: $ foo. $ this-> foo vil stadig være undefineret, hvis $ foo er en statisk var.) Har brug for et øjeblikkeligt objekt Ingen Ja

selv vs dette i PHP - eksempler

klasseeksempel Klass offentlig statisk $ foo; offentlig $ bar; public function regularFunction () ekko $ denne-> bar;  offentlig statisk funktion staticFunction () echo self :: $ foo;  offentlig statisk funktion anotherStatFn () self :: staticFunction ();  offentlig funktion regularFnUsingStaticVar () echo self :: $ foo;  // BEMÆRK: Fra PHP 5.3 bruger $ denne :: $ bar i stedet for selv :: $ bar er tilladt eksempelClass :: $ foo = "Hej"; $ obj = nyt eksempelKlasse (); $ obj-> bar = "Verden!"; exampleClass :: staticFunction (); / * udskriver Hej * / $ obj-> regularFunction (); / * udskriver verden! * / 

Statiske funktioner kan kun bruge statiske variabler. Statiske funktioner og variabler henvises til via selv::funktionsnavn () eller selv::variableName. I eksemplet vist ovenfor henvises til statiske variabler med klassens navn (eksempelKlasse :: $ foo) eller, med en selv:: (self :: $ foo) når det bruges inden for den statiske metode [navngivet staticFunction ()] af klassen.

Regelmæssige funktioner og variabler i en klasse har brug for en objektkontekst for at blive henvist til. De kan ikke eksistere uden en genstandskontekst. Objektskonteksten leveres af $ dette. I ovenstående eksempel er $ bar en regelmæssig variabel, og det kaldes derfor $ obj-> bjælke (i objektsammenhæng med variabel obj) eller som $ denne-> bjælke (igen i en objektsammenhæng inden for en metode til et objekt).

selv bruger ikke et foregående $ fordi selv betyder ikke en variabel, men selve klassekonstruktionen. $ dette refererer til en bestemt variabel, så den har en foregående $.

Referencer

  • Statisk nøgleord - PHP.net