>백엔드 개발 >PHP 튜토리얼 >[php 클래스 및 객체] 익명 클래스

[php 클래스 및 객체] 익명 클래스

不言
不言원래의
2018-04-13 11:19:021782검색

이 글에서 공유한 내용은 [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 클래스 및 객체]overloading


위 내용은 [php 클래스 및 객체] 익명 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 데몬다음 기사:PHP 데몬