8 votes

PHP autorise-t-il les fonctions et les propriétés des classes à partager le même nom ?

Un de mes anciens collègues a écrit ceci dans notre code :

public function paginate() {
    return $this->paginate;
}

Et je me demandais : est-ce que cela renvoie la fonction paginate() ou la propriété de la classe $paginate ?

Je suppose que c'est la seconde hypothèse, mais il est étrange que je n'aie trouvé aucune information à ce sujet.

5voto

JJPA Points 4796

Cela renvoie la propriété de la classe $paginate .

Si c'était return $this->someName();

alors il retourne la fonction someName() .

2voto

IMSoP Points 16089

Les parenthèses après un appel de fonction en PHP ne sont pas facultatives, et les méthodes et fonctions ordinaires ne sont pas des "objets de première classe" (elles ne peuvent pas être manipulées comme des variables à part entière, comme par exemple en JavaScript).

Il n'y a donc aucune ambiguïté, puisque $this->paginate(); doit être un appel de fonction, et $this->paginate; doit être une référence à une variable.

Toutefois, il ne s'agit pas d'une bonne pratique et les éditeurs, les IDE, etc., la signaleront probablement comme un avertissement. En général, les fonctions et les méthodes doivent commencer par un verbe et non par un nom. Il serait donc préférable d'appeler la fonction getPaginate()

1voto

Cups Points 3929

Retourne une propriété d'objet :

$this->paginate;

vs

provoquer l'exécution d'une méthode d'un objet (une fonction dans une classe est appelée une méthode)

$this->paginate();

0voto

Vassilis Barzokas Points 2125

Il renverra le $paginate de la classe à laquelle la fonction appartient ou ihnerite d'une autre classe, si elle est déclarée comme public .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X