Question

Avec l'aide PHP5 « copie à l'écriture » et en passant par référence provoquant plus d'une pénalité de performance qu'un gain, pourquoi devrais-je utiliser le passage par référence? Autres que les fonctions de rappel qui retourneront plus d'une valeur ou des classes qui est attributs que vous voulez être altérable sans appel d'une fonction de jeu plus tard (mauvaise pratique, je sais), est-il utilisé pour cela que je suis absent?

Était-ce utile?

La solution

Vous utilisez le passage par référence lorsque vous souhaitez modifier le résultat et que tout y est à elle.

Rappelez-vous aussi bien que dans les objets PHP sont toujours passe par référence.

Personnellement, je trouve le système de PHP de copier les valeurs implicitement (je suppose que pour se défendre contre toute modification accidentelle) lourdes et peu intuitives, mais là encore j'ai commencé dans un langage fortement typé, ce qui explique probablement. Mais je trouve intéressant que les objets diffèrent d'un fonctionnement normal de PHP et je le prends comme preuve que le mécanisme de copie implicite de PHP "est vraiment pas un bon système.

Autres conseils

Une fonction récursive qui remplit un tableau? Rappelez-vous écrire quelque chose comme ça, une fois.

Il est inutile d'avoir des centaines de copies d'un tableau partiellement rempli et la copie, l'épissage et l'assemblage de pièces à chaque tour.

Même lorsque les objets en passant, il y a une différence.

Essayez cet exemple:

class Penguin { }

$a = new Penguin();

function one($a)
{
  $a = null;
}

function two(&$a)
{
  $a = null;
}

var_dump($a);
one($a);
var_dump($a);
two($a);
var_dump($a);

Le résultat sera:

object(Penguin)#1 (0) {}
object(Penguin)#1 (0) {}
NULL

Lorsque vous passez une variable contenant une référence à un objet par référence, vous pouvez modifier la référence à l'objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top