이 글에서 공유한 내용은 [PHP 클래스 및 개체] 익명 클래스에 관한 것입니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구가 참조할 수 있습니다.
익명 클래스
PHP 7에서는 익명 클래스를 지원하기 시작합니다.
함수: 일회성 단순 객체 생성
익명 클래스의 생성자에 매개변수를 전달할 수 있고, 다른 클래스를 확장하고, 인터페이스를 구현하고, 다른 일반 클래스와 같은 특성을 사용할 수도 있습니다.
<?phpclass SomeClass {}interface SomeInterface {}trait SomeTrait {} var_dump(new class(10) extends SomeClass implements SomeInterface { private $num; public function __construct($num) { $this->num = $num; } use SomeTrait; });/* outputs: object(class@anonymous)#1 (1) { ["Command line code0x104c5b612":"class@anonymous":private]=> int(10) } */
익명 클래스 이후 일반 클래스에 중첩되어 있으면 외부 클래스(Outer 클래스)의 프라이빗(private), 보호(protected) 메서드 또는 속성에 액세스할 수 없습니다.
외부 클래스의 보호된 속성이나 메서드에 액세스하기 위해 익명 클래스는 외부 클래스를 확장할 수 있습니다.
외부 클래스(Outer 클래스)의 private 속성을 사용하려면 생성자를 통해 전달되어야 합니다.
<?phpclass Outer{ private $prop = 1; protected $prop2 = 2; protected function func1() { return 3; } public function func2() { return new class($this->prop) extends Outer { private $prop3; public function __construct($prop) { $this->prop3 = $prop; } public function func3() { return $this->prop2 + $this->prop3 + $this->func1(); } }; } }echo (new Outer)->func2()->func3(); //6
동일한 익명 클래스가 선언되어 생성된 객체는 모두 이 클래스의 인스턴스입니다.
익명 클래스의 이름은 아래 예와 같이 엔진에 의해 지정됩니다. 구현 세부 사항으로 인해 이 클래스 이름에 의존해서는 안 됩니다.
<?phpecho get_class(new class {});//class@anonymousD:\phpStudy2018\PHPTutorial\WWW\index.php00500020
관련 추천:
위 내용은 [php 클래스 및 객체] 익명 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!