Maison  >  Article  >  développement back-end  >  Introduction au contrôle d'accès des attributs ou méthodes en PHP (exemple de code)

Introduction au contrôle d'accès des attributs ou méthodes en PHP (exemple de code)

不言
不言avant
2018-10-25 16:44:352012parcourir

Ce que cet article vous apporte est une introduction au contrôle d'accès aux attributs ou aux méthodes en PHP (exemples de code). Les amis dans le besoin peuvent s'y référer.

Le contrôle d'accès aux propriétés ou méthodes en PHP se fait en ajoutant les mots-clés public (public), protected (protected) ou Privé (privé) à réaliser. Les membres de classe définis comme publics sont accessibles de n'importe où, et les membres de classe définis comme protégés sont accessibles par eux-mêmes, ainsi que par leurs 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 publics, protégés ou privés. S'il est défini avec var, il est considéré comme public. Les sous-classes peuvent modifier les valeurs des propriétés publiques et protégées de la classe de base.

<?php
class A{
    var $a="a";
    protected $b="b";
    private $c="c";
    
    function printVar(){
        echo $this->a.";".$this->b.";".$this->c.";"."\n";
    }
}
class B extends A{
    public $a="aa";
    protected $b="bb";
    private $c="cc";
}
$a=new A();
$a->printVar();
$b=new B();
$b->printVar();
?>

Les cours doivent être définis comme publics, protégés ou privés. S’il n’est pas précisé, il est considéré comme public. Les sous-classes peuvent remplacer les fonctions publiques et protégées de la classe de base.

<?php
class A{
    public function fa(){
        echo "A->fa\n";
    }
    protected function fb(){
        echo "A->fb\n";
    }
    private function fc(){
        echo "A->fc\n";
    }
    function showFoo(){
        $this->fa();
        $this->fb();
        $this->fc();
    }
}
class B extends A{
    function fa(){
        echo "B->fa\n";
    }
    protected function fb(){
        echo "B->fb\n";
    }
    private function fc(){
        echo "B->fc\n";
    }
}
$a=new A();
$a->showFoo();
$b=new B();
$b->showFoo();
?>

Les objets de la même classe, même s'il ne s'agit pas de la même instance, peuvent accéder aux membres privés et protégés les uns des autres, car les détails d'implémentation internes de ces objets sont connus.

<?php
class A
{
    private $a;

    public function __construct($a)
    {
        $this->a = $a;
    }

    private function fa()
    {
        echo &#39;private method fa.&#39;;
    }

    public function foo(A $other,$v)
    {
        $other->a = $v;
        var_dump($other->a);
        $other->fa();
    }
}

$a = new A(&#39;a&#39;);
$aa=new A(&#39;aa&#39;);
$a->foo($aa,&#39;newA&#39;);
?>

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