Maison >développement back-end >tutoriel php >PHP apprenant les propriétés privées des classes d'appel externes

PHP apprenant les propriétés privées des classes d'appel externes

little bottle
little bottleavant
2019-04-26 18:02:372659parcourir

Cet article parle principalement des propriétés privées des classes d'appel externes, qui ont une certaine valeur de référence. Les amis intéressés peuvent en prendre connaissance et espérer vous aider.

Propriétés privées des classes appelantes externes

Jetons d'abord un coup d'œil aux fonctions __get et __set de la classe PHP
Lorsque vous essayez d'obtenir une propriété inaccessible, la classe appellera automatiquement __getFonction.
Lorsque vous essayez de définir une propriété inaccessible, la classe appelle automatiquement la fonction __set.

Tout d'abord, jetons un œil à la fonction __get Essayons d'obtenir un attribut accessible :

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo &#39;you can get &#39;.$name;
        }
    }
    $dy = new A();
    echo $dy->a;
?>

Regardons son retour :

1

. Pas de problème, la fonction __get n'est pas appelée. Maintenant laissez-moi accéder à une propriété privée inaccessible :

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo &#39;you can get &#39;.$name;
        }
    }
    $dy = new A();
    echo $dy->b;
?>

et vous trouverez :

you can get b

indiquant que le __get La fonction est appelée ici. , permettez-moi de jeter un nouveau coup d'œil à la fonction __set et d'utiliser également l'attribut accessible public en premier :

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
            echo &#39;you can get &#39;.$name.$val;
        }
    }
    $dy = new A();
    $dy->a = 1;
    echo $dy->a;
?>

Regardez le résultat :

1

est utilisé avec succès, pas de problème, Ensuite nous utilisons des attributs privés :

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
            echo &#39;you can get &#39;.$name.$val;
        }
    }
    $dy = new A();
    $dy->b = 1;
    echo $dy->b;
?>

Ensuite nous voyons :

you can get b1

PHP Fatal error:  Cannot access private property A::$b in /usercode/file.php on line 11

La fonction __set est appelée ici et nous demande que nous ne pouvons pas utiliser les attributs privés de la classe.
Implémentons maintenant l'utilisation externe des attributs privés via la fonction __set :

<?php
    class A{
        public $a;
        private $b;
        function __set($name,$val){
                $this->$name=$val;
        }
        function B(){
            echo $this->b;
        }
    }
    $dy = new A();
    $dy->b = 1;
    $dy->B();
?>

Regardez le résultat :

1

indique que l'utilisation est réussie.

Tutoriels associés : Tutoriel vidéo PHP

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer