>  기사  >  백엔드 개발  >  PHP의 속성 또는 메소드에 대한 액세스 제어 소개(코드 예)

PHP의 속성 또는 메소드에 대한 액세스 제어 소개(코드 예)

不言
不言앞으로
2018-10-25 16:44:352017검색

이 기사는 PHP의 속성 또는 메소드 액세스 제어에 대한 소개입니다(코드 예제). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 돕다.

PHP의 속성이나 메서드에 대한 액세스 제어는 public(공개), protected(보호됨) 또는 키워드를 추가하여 수행됩니다. 프라이빗(프라이빗)을 달성합니다. public으로 정의된 클래스 멤버는 어디에서나 액세스할 수 있으며, protected로 정의된 클래스 멤버는 자체 클래스, 해당 하위 클래스 및 상위 클래스에서 액세스할 수 있습니다. private으로 정의된 클래스 멤버는 해당 멤버가 정의된 클래스에서만 액세스할 수 있습니다.

클래스 속성은 공개, 보호 또는 비공개로 정의되어야 합니다. var로 정의하면 공개로 간주됩니다. 하위 클래스는 기본 클래스의 공개 및 보호 속성 값을 수정할 수 있습니다.

<?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();
?>

클래스는 공개, 보호 또는 비공개로 정의되어야 합니다. 지정하지 않으면 공개로 간주됩니다. 하위 클래스는 기본 클래스의 공개 및 보호 기능을 재정의할 수 있습니다.

<?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();
?>

동일한 클래스의 객체는 동일한 인스턴스가 아니더라도 서로의 private 및 protected 멤버에 액세스할 수 있습니다. 이러한 객체의 내부 구현 세부 정보가 알려져 있기 때문입니다.

<?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;);
?>

위 내용은 PHP의 속성 또는 메소드에 대한 액세스 제어 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제