Maison  >  Article  >  développement back-end  >  La différence entre l'opérateur d'analyse de plage à double deux-points et l'opérateur flèche -> en PHP

La différence entre l'opérateur d'analyse de plage à double deux-points et l'opérateur flèche -> en PHP

黄舟
黄舟original
2017-07-02 11:48:513646parcourir

Les doubles deux-points sont généralement utilisés dans les appels aux méthodes statiques et aux variables statiques À l'heure actuelle, la classe n'a pas besoin d'être instanciée. Au lieu de cela, lorsque vous utilisez la flèche opérateur - >, la classe doit être instanciée (ou elle peut être appelée à l'intérieur de la classe.)

Le double deux-points (::) est un symbole d'accès positionnel . Cela ne signifie pas seulement des méthodes et des variables statiques. Mais cela signifie que la chose située sur le côté gauche du côlon appelle la chose située sur le côté droit du côlon. Une telle signification. Donc. . $self ne peut pas être écrit à gauche. Parce que $self est analysé en premier, à moins que la variable $self ne soit définie précédemment, elle pointe vers elle-même.
Dans la dernière version de php. Le double deux-points est utilisé exactement pour suivre cette fonction. . Peut être remplacé - > Appelez objet pour obtenir la variable. Parce que c'est un indicateur de position. .

consiste à distinguer les méthodes et les attributs de l'objet et les propriétés sont spécifiques à chaque objet et doivent donc être instanciées en premier. Il en va de même pour d'autres langages comme C++, JAVA, etc. (bien entendu les symboles d'accès qu'ils fournissent peuvent être différents)

- > : consiste à accéder aux méthodes statiques et aux variables statiques de la classe

->Accès aux objets et ::accès à la localisation

Tout le monde l'a déjà dit sur la partie théorique, et ils ont effectivement raison . Mais php est un peu différent.
Dans la configuration par défaut, PHP n'a pas d'exigences strictes : : La méthode statique doit être appelée
Vous pouvez le savoir en testant le code suivant

class t{
    public $v = 1;
    public function getVar(){
        return 1;//$this->v;
    }
}

class xxxxx
{
public function actionIndex()
    {
$x = t::getVar();
        $t = new t();
        $x = $t->getVar();
    }
}


作者:楚天乐
链接:https://www.zhihu.com/question/19782824/answer/35943595
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn