핵심 부분을 소개하기 전에 PHP 객체지향 접근 제어에 대해 살펴보겠습니다.
퍼블릭(public), protected(보호됨) 또는 private(프라이빗)이라는 키워드를 앞에 추가하여 속성이나 메서드에 대한 액세스 제어를 수행합니다. public으로 정의된 클래스 멤버는 어디에서나 액세스할 수 있습니다. protected로 정의된 클래스 멤버는 자체 클래스와 해당 하위 클래스 및 상위 클래스에서 액세스할 수 있습니다. private으로 정의된 클래스 멤버는 해당 멤버가 정의된 클래스에서만 액세스할 수 있습니다.
클래스 속성은 public, protected, private 중 하나로 정의되어야 합니다. var로 정의하면 공개로 간주됩니다.
다음 샘플 코드를 참조하세요(공식 문서 http://php.net/manual/en/lang...에서:
<?php /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; 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
위 코드에서 볼 수 있듯이 클래스의 인스턴스 객체를 사용하여 액세스합니다) 비공개 또는 보호된 멤버 속성에 액세스하면 치명적인 오류가 발생합니다.
다음은 PHP 인스턴스 개체의 비공개 속성에 액세스하기 위해 기사 제목에서 수행해야 하는 작업입니다.
우리는 일반적인 관행에 따라 일반적으로 이 속성을 반환합니다.
public function getPrivate() { return $this->private; }
사실은 이렇게 해야 합니다.
다음은 코드를 작성할 때 사용하는 방법일 뿐입니다.
<?php class A { private $a = 'self'; public function test() { $other = new self(); $other->a = 'other'; var_dump($other->a); } } $aa = new A(); $aa->test();
위 코드에 표시된 대로 새 A 개체를 만들고 이 인스턴스의 개인 속성 a에 값을 할당합니다.
설명: 동일한 클래스의 개체가 서로의 개인 및 보호 속성에 액세스할 수 있기 때문입니다. 이는 동일한 인스턴스가 아니더라도 이러한 개체의 내부 구현 세부 정보가 알려져 있기 때문입니다.
위 내용은 PHP 인스턴스 객체의 개인 속성에 직접 액세스하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!