Les documents utilisent assign by reference (= &) mais est-ce nécessaire avec PHP 5?

12

J'ai remarqué dans la documentation Joomla, comme pour JFactory / getSession , que les exemples utilisent assign-by-reference ( =&), plutôt qu'une simple assignation ( =).

$session =& JFactory::getSession();

Est-ce juste obsolète ou couvre-t-il délibérément les utilisateurs de PHP 4?

Est-ce nécessaire sous PHP 5? Ou y a-t-il quelque chose lié à Joomla que j'ai oublié?

MrWhite
la source
Grande question! Je me suis souvent demandé si je devais utiliser le symbole égal et l'esperluette ou simplement le symbole égal.
TryHarder
Certains documents ne sont pas mis à jour. Lorsque vous repérez quelque chose, appuyez simplement sur le bouton d'édition, c'est un wiki.
Valentin Despa

Réponses:

9

Cela a été utilisé pour PHP4 fois. A partir de PHP5, les objets sont assignés par référence, il n'est donc pas nécessaire de le faire explicitement.

Dmitry Rekun
la source
1
en php 5, il provoque également de nombreux avertissements stricts, et il y en a beaucoup dans le noyau Joomla, ce qui provoque parfois des moments amusants lorsque vous passez au rapport d'erreurs de développement. Un autre de ces changements en PHP qui rend difficile la compatibilité descendante.
Jordan Ramstad
C'est mauvais dans Joomla 1.5 car il a été écrit pour supporter PHP 4.3. Avec les versions 2.5 et 3.x, le nombre d' E_STRICTerreurs dans le noyau est minime, le cas échéant.
Michael
1
Merci, je pensais que cela devait être une gueule de bois PHP4, mais avec Joomla 1.6+ nécessitant PHP5 +, je commençais à me demander. Point mineur, mais les objets ne sont pas réellement "assignés par référence" en PHP5. L'opérateur assign-by-reference n'est pas requis (dans la plupart des cas) car les instances de classe sont stockées différemment en PHP5. (Les instances de classe contiennent un "identifiant d'objet" plutôt que la valeur elle-même, comme dans PHP4.) Un "identifiant d'objet" est attribué en PHP5, plutôt que la valeur d'objet. Le résultat net est similaire, mais il existe des différences.
MrWhite