Maison > développement back-end > tutoriel php > Comment accéder directement aux propriétés privées des objets d'instance PHP

Comment accéder directement aux propriétés privées des objets d'instance PHP

藏色散人
Libérer: 2023-04-07 19:42:01
avant
2745 Les gens l'ont consulté

Avant de présenter les éléments clés, 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, protected ou private devant. Les membres de la classe définis comme publics sont accessibles de n’importe où. Un membre de classe défini comme protégé est accessible par lui-même, ses sous-classes et sa classe parent. 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 ou privés. S'il est défini avec var, il est considéré comme public.

Veuillez consulter l'exemple de code suivant (extrait du document officiel http://php.net/manual/en/lang... :

<?php
/**
 * Define MyClass
 */
class MyClass
{
    public $public = &#39;Public&#39;;
    protected $protected = &#39;Protected&#39;;
    private $private = &#39;Private&#39;;
    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
Copier après la connexion

Comme indiqué dans le code ci-dessus, nous utilisons une classe Lorsqu'un objet instance accède à une propriété membre privée ou protégée d'une classe, une erreur fatale sera générée

Voici ce que fait le titre de l'article, accédant aux propriétés privées de l'objet instance php >Selon. Selon notre pratique habituelle, nous écrivons généralement une méthode publique et renvoyons cet attribut

public function getPrivate()
{
    return $this->private;
}
Copier après la connexion

Le fait est que nous devrions le faire. On dit qu'il n'est utilisé que dans des scénarios spéciaux. ne jouera pas avec cela lors de l'écriture du code.

<?php
class A {
    private $a = &#39;self&#39;;
    public function test() {
        $other = new self();
        $other->a = &#39;other&#39;;
        var_dump($other->a);
    }
}
$aa = new A();
$aa->test();
Copier après la connexion
Comme indiqué dans le code ci-dessus, nous créons un nouvel objet A et attribuons une valeur à l'attribut privé a de cette instance, 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 des autres même s'ils ne sont pas la même instance, c'est parce que les détails d'implémentation internes de ces objets sont tous les mêmes connus.

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!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
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
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal