Comment appeler les fonctions _get et _set à partir de classes externes en PHP

不言
Libérer: 2023-04-03 13:50:01
original
1751 Les gens l'ont consulté

Le contenu de cet article explique comment appeler les fonctions _get et _set dans les classes externes en PHP. J'espère que cela pourra aider les amis dans le besoin.

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;
?>
Copier après la connexion

Regardons son retour :

1
Copier après la connexion
Copier après la connexion
Copier après la connexion

. 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;
?>
Copier après la connexion

et vous trouverez :

you can get b
Copier après la connexion

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;
?>
Copier après la connexion

Regardez le résultat :

1
Copier après la connexion
Copier après la connexion
Copier après la connexion

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;
?>
Copier après la connexion

Ensuite nous voyons :

you can get b1

PHP Fatal error:  Cannot access private property A::$b in /usercode/file.php on line 11
Copier après la connexion

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();
?>
Copier après la connexion

Regardez le résultat :

1
Copier après la connexion
Copier après la connexion
Copier après la connexion

indique que l'utilisation est réussie.

Recommandations associées :

Code pour PHP pour implémenter la fonction d'exportation PDF sous le framework thinkphp

Analyse approfondie de la fonction strpos en 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!