Cet article vous présente principalement les informations pertinentes sur la façon d'accéder directement aux attributs privés dans l'objet d'instance PHP. L'article le présente en détail à travers l'exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. qui en a besoin Apprenons avec l'éditeur ci-dessous.
Préface
Cet article présente principalement le contenu pertinent sur la façon d'accéder directement aux attributs privés dans l'objet d'instance PHP Avant d'introduire la clé. parties, passons d’abord en revue le contrôle d’accès orienté objet PHP.
Le contrôle d'accès aux propriétés ou aux méthodes est réalisé en ajoutant les mots-clés public (public), protected (protected) ou private (private) devant. Les membres de la classe définis comme publics sont accessibles de n’importe où. Les membres de la classe définis comme protégés sont accessibles par lui-même ainsi que par ses sous-classes et classes parentes. Les membres de classe définis comme privés ne sont accessibles que par la classe dans laquelle ils sont définis.
Les attributs de classe doivent être définis comme étant publics, protégés et privés. S'il est défini avec var, il est considéré comme public.
Veuillez consulter l'exemple de code ci-dessous (extrait de la documentation officielle : http://php.net/manual/en/lingual.oop5.visibility.php
<?php /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // Works echo $obj->protected; // Fatal Error echo $obj->private; // Fatal Error $obj->printHello(); // Shows Public, Protected and Private
Comme le montre le code ci-dessus, lorsque nous utilisons un objet instance d'une classe pour accéder à un attribut membre privé ou protégé d'une classe, une erreur fatale sera générée
Voici ce qui suit. Ce que le titre de l'article doit faire, c'est accéder aux propriétés privées de l'objet d'instance PHP
Selon notre pratique normale, nous écrivons généralement une méthode publique et. puis renvoyez cette propriété.
public function getPrivate() { return $this->private; }
Le fait est que nous devrions faire cela
Ce qui suit est juste une méthode d'utilisation dans des scénarios spéciaux. J'espère que vous n'écrivez pas de code en temps normal.
<?php class A { private $a = 'self'; public function test() { $other = new self(); $other->a = 'other'; var_dump($other->a); } } $aa = new A(); $aa->test();
Comme le montre le code ci-dessus, nous avons créé un nouvel objet A et attribué une valeur au privé. attribut a de cette instance, mais aucune erreur n'a été signalée !
Explication : Parce que les objets de la même classe peuvent accéder aux membres privés et protégés les uns des autres même s'ils ne sont pas la même instance. est dû aux détails spécifiques de mise en œuvre au sein de ces objets est connu
Résumé
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!