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->
.
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 |
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 $.