selv vs. dette i PHP

PHP støtter klasser og andre objektorientert konstruksjoner. Statiske funksjoner og variabler i PHP-klasser er ikke knyttet til noen bestemt forekomst av klassen (med andre ord et objekt). Se forskjellen mellom gjenstand og klasse.

I stedet er statiske funksjoner og variabler knyttet til klassedepartementet selv. Med andre ord deler alle forekomster av en klasse samme statiske variabel. Innenfor en metode (funksjon) av en klasse blir statiske variabler og funksjoner tilgjengelige med selv::. Andre metoder og variabler brukes i sammenheng med et objekt (en forekomst) av en klasse ved hjelp av dette->.

Sammenligningstabell

selv i forhold til denne sammenligningstabellen
selv-dette
Kan brukes i statiske funksjoner Ja Nei
Tilgjengelig klassevariabel og metoder med selv:: $ this-> (Merk at PHP> 5.3 tillater bruk av $ dette med statiske variabler bruker $ this :: $ foo. $ this-> foo vil fortsatt være udefinert hvis $ foo er en statisk var.)
Trenger et instantiated objekt Nei Ja

selv vs dette i PHP - Eksempler

klasse eksempelClass offentlig statisk $ foo; offentlig $ bar; offentlig funksjon regularFunction () echo $ this-> bar;  statisk statisk funksjon staticFunction () echo self :: $ foo;  statisk statisk funksjon otherStatFn () self :: staticFunction ();  offentlig funksjon regularFnUsingStaticVar () echo self :: $ foo;  // MERK: Fra PHP 5.3 bruker $ dette :: $ bar i stedet for selv: $ bar er tillatt exampleClass :: $ foo = "Hello"; $ obj = nytt eksempelClass (); $ obj-> bar = "World!"; exampleClass :: staticFunction (); / * utskrifter Hei * / $ obj-> regularFunction (); / * utskrifter verden! * / 

Statiske funksjoner kan bare bruke statiske variabler. Statiske funksjoner og variabler refereres via selv::funksjonsnavn () eller selv::variabel. I eksemplet som er vist ovenfor, refereres statiske variabler med klassenavnet (exampleClass :: $ foo) eller, med a selv:: (selv :: $ foo) når den brukes i den statiske metoden [navngitt staticFunction ()] av klassen.

Vanlige funksjoner og variabler av en klasse trenger en objektkonsept som skal refereres. De kan ikke eksistere uten en objektkontekst. Objektets kontekst er gitt av $ dette. I eksempelet ovenfor er $ bar en vanlig variabel, og det refereres til som $ obj-> bar (i objektets sammenheng med variabel obj) eller som $ this-> bar (igjen i en objekt kontekst innenfor en metode for en objekt).

selv- bruker ikke en foregående $ fordi selv- betyr ikke en variabel, men klassen konstruerer seg selv. $ dette refererer til en bestemt variabel slik at den har en forutgående $.

referanser

  • Statisk søkeord - PHP.net