Verschil tussen self:: & $this
Er zal een goede reden voor zijn maar ik zou graag weten wat de reden is..
$this verwijst zoals je wel weet waarschijnlijk naar de eigenschappen van de huidige instantie, en deelt deze eigenschappen ook alleen met de instantie en niet met andere instanties.
Vuistregeltje: self:: & static zijn voor delen van klassen die niet onderdeel zijn van de 'state', de toestand van de klasse en die dus met alle instanties veilig gedeeld kunnen worden. Daarom kan je ook nooit $this in een static functie gebruiken. Bijvoorbeeld een hulpfunctie:
Code (php)
encryptData() kan hier heel goed static zijn omdat het geen state deelt met de rest van de klasse. Het is slechts een hulpfunctie.
voorbeeld code:
Code (php)
In het eerste geval zie je hier een variabele $zoek, die een instantie is van de class zoek. Die instantie $zoek heeft zijn eigen functies en variabelen, en als je die wilt aanroepen vanuit bijvoorbeeld de functie bestand(), dan gebruik je $this ($this is dus een verwijzing naar de huidige instantie van de class)
Het 2e geval maakt geen instantie van de class aan, $this bestaat in dit geval dus ook niet. Als je nu een andere functie uit de class aan wilt roepen kun je dit doen door het gebruik van self::functie().
*grin* een lang bericht typen levert wel eens dubbele verhalen op ;-) Hopelijk dat je hier verder mee komt. :-)
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
Andreas
Bijvoorbeeld een singleton: