Na wat geëxperimenteerd te hebben en goed de manual te hebben gelezen ben ik tot het volgende gekomen:
In dit stukje code word een nieuw object van theClass aangemaakt. Een kopie van dat object word toegekend aan $a.
Er zijn dan dus 2 objecten, het orgineel en de kopie in $a.
Het verschil met het vorige is dat nu geen kopie van het nieuwe object aan $a gegeven word, maar $a word een reference naar het orginele object.
In dit geval is er dus maar 1 object, het orgineel, en $a verwijst daarnaar.
De 2e manier lijkt me dus veel efficienter wat load en geheugengebruik betreft.
Kan iemand me vertellen waarom de 2e manier niet altijd gebruikt word, en wat het nut is van constructie #1?
de manual is daar niet echt duidelijk in, daar worden alleen de voordelen van manier 2 uitgelegd:
Wat is nou de officiële notatie van een reference?
als zijnde een assignment operator, of
als een operator prefix?
PHP:
1
| <?$a = new theClass;?> |
In dit stukje code word een nieuw object van theClass aangemaakt. Een kopie van dat object word toegekend aan $a.
Er zijn dan dus 2 objecten, het orgineel en de kopie in $a.
PHP:
1
| <?$a =& new theClass;?> |
Het verschil met het vorige is dat nu geen kopie van het nieuwe object aan $a gegeven word, maar $a word een reference naar het orginele object.
In dit geval is er dus maar 1 object, het orgineel, en $a verwijst daarnaar.
De 2e manier lijkt me dus veel efficienter wat load en geheugengebruik betreft.
Kan iemand me vertellen waarom de 2e manier niet altijd gebruikt word, en wat het nut is van constructie #1?
de manual is daar niet echt duidelijk in, daar worden alleen de voordelen van manier 2 uitgelegd:
Nog een klein puntje:Note: Not using the & operator causes a copy of the object to be made. If you use $this in the class it will operate on the current instance of the class. The assignment without & will copy the instance (i.e. the object) and $this will operate on the copy, which is not always what is desired. Usually you want to have a single instance to work with, due to performance and memory consumption issues.
Wat is nou de officiële notatie van een reference?
PHP:
1
| <?$a =& $b;?> |
als zijnde een assignment operator, of
PHP:
1
| <?$a = &$b;?> |
als een operator prefix?