I documenti usano assegnano per riferimento (= &) ma è necessario con PHP 5?


12

Ho notato nella documentazione di Joomla, come per JFactory / getSession , che gli esempi usano assegnazione per riferimento ( =&), piuttosto che una semplice assegnazione ( =).

$session =& JFactory::getSession();

Questo è solo obsoleto o copre intenzionalmente gli utenti di PHP 4?

È necessario in PHP 5? O c'è qualcosa di collegato a Joomla che ho trascurato?


Ottima domanda! Mi sono spesso chiesto se avrei dovuto usare il simbolo uguale e la e commerciale o solo il simbolo uguale.
TryHarder,

Alcuni documenti non vengono aggiornati. Quando vedi qualcosa, basta premere il pulsante Modifica, è un wiki.
Valentin Despa,

Risposte:


9

Questo è stato usato per PHP4 volte. Da PHP5 in poi gli oggetti sono assegnati per riferimento, quindi non è necessario farlo esplicitamente.


1
in php 5 fa sì che anche molti avvisi di standard rigorosi lo abbiano, e ce n'è molto nel core di Joomla, a volte causando momenti divertenti quando si passa alla segnalazione degli errori di sviluppo. Un altro di quei cambiamenti in PHP che rende difficile la retrocompatibilità.
Jordan Ramstad,

È un male in Joomla 1.5 poiché è stato scritto per supportare PHP 4.3. Con 2.5 e 3.x, la quantità di E_STRICTerrori nel core è minima se presente.
Michael,

1
Grazie, immaginavo che dovesse essere stata una sbornia di PHP4, ma con Joomla 1.6+ che richiedeva PHP5 + stavo cominciando a chiedermi. Punto minore, ma in realtà gli oggetti non sono "assegnati per riferimento" in PHP5. L'operatore di assegnazione per riferimento non viene reqd (nella maggior parte dei casi) poiché le istanze di classe sono memorizzate in modo diverso in PHP5. (Le istanze di classe contengono un "identificatore di oggetto" anziché il valore stesso, come in PHP4.) Un "identificatore di oggetto" viene assegnato in PHP5, anziché nel valore dell'oggetto. Il risultato netto è simile, ma ci sono differenze.
MrWhite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.