Question

Qu'est-ce que cela signifie lorsqu'un nom de fonction PHP commence par un trait de soulignement?

par exemple: __ construct ()

Je sais ce que la construction signifie, mais j’ai vu d’autres endroits où la fonction commence par un trait de soulignement ou un double soulignement et je ne suis tout simplement pas sûr de sa signification.

Était-ce utile?

La solution

Cela signifie que PHP l'appelle implicitement.

C'est ce qu'on appelle une "méthode magique"

En outre, il s'agit de deux traits de soulignement et non d'un.

En savoir plus ici: Méthodes magiques de PHP

Autres conseils

En PHP, les fonctions commençant par deux traits de soulignement ont généralement une signification particulière. À partir du manuel:

  

PHP réserve tous les noms de fonctions   en commençant par __ comme magique. Il est   recommandé de ne pas utiliser   noms de fonction avec __ en PHP sauf si   vous voulez de la magie documentée   fonctionnalité.

Par exemple, __construct () est une méthode spéciale appelée automatiquement lors de l'initialisation d'un objet.

Voir aussi: http://php.net/manual/en/ language.oop5.magic.php

Il existe également une dénomination commune "style de codage". qui utilise un trait de soulignement initial pour indiquer que les méthodes ou les propriétés sont privées / protégées. Je pense que c'est assez répandu.

Comme indiqué dans d'autres réponses, le double trait de soulignement est utilisé pour "magique". méthodes. L'idée est que l'utilisateur n'utilise jamais intentionnellement deux traits de soulignement pour un nom de méthode, il y a donc peu de risque de collision. La raison pour laquelle ce n’est pas un trait de soulignement unique, je crois, c’est que ce soulignement était une convention populaire pour les méthodes privées à l’époque (der), avant que le mot-clé 'private' ne soit venu pour imposer la confidentialité à OO.

Dans codeigniter, si vous démarrez une méthode dans un contrôleur avec un trait de soulignement, le routeur saura qu'il ne sera pas autorisé à y accéder à partir de l'URL.

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