>  기사  >  백엔드 개발  >  PHP7의 익명 클래스 사용에 대한 간략한 분석

PHP7의 익명 클래스 사용에 대한 간략한 분석

青灯夜游
青灯夜游앞으로
2022-07-27 14:26:542167검색

PHP7 이후 PHP에 익명 클래스 기능이 추가되었습니다. 익명 클래스와 익명 메서드는 PHP를 더욱 현대적인 언어로 만들고 코드 개발 작업을 더욱 편리하게 만듭니다. 다음 글은 PHP7 익명 클래스의 사용법을 간략하게 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

PHP7의 익명 클래스 사용에 대한 간략한 분석

익명 클래스는 미리 정의되지 않고 정의되면 직접 인스턴스화되는 클래스와 같습니다.

// 直接定义
$objA = new class{
    public function getName(){
        echo "I'm objA";
    }
};
$objA->getName();
 
 
// 方法中返回
function testA(){
    return new class{
        public function getName(){
            echo "I'm testA's obj";
        }
    };
}
 
$objB = testA();
$objB->getName();
 
 
// 作为参数
function testB($testBobj){
    echo $testBobj->getName();
}
 
testB(new class{
        public function getName(){
            echo "I'm testB's obj";
        }
});
// 继承、接口、访问控制等
class A{
    public $propA = 'A';
    public function getProp(){
        echo $this->propA;
    }
}
trait B{
    public function getName(){
        echo 'trait B';
    }
}
interface C{
    public function show();
}
$p4 = 'b4';
$objC = new class($p4) extends A implements C{
    use B;
    private $prop1 = 'b1';
    protected $prop2 = 'b2';
    public $prop3 = 'b3';
 
    public function __construct($prop4){
        echo $prop4;
    }
 
    public function getProp(){
        parent::getProp();
        echo $this->prop1, '===', $this->prop2, '===', $this->prop3, '===', $this->propA;
        $this->getName();
        $this->show();
    }
    public function show(){
        echo 'show';
    }
};
 
$objC->getProp();
 
// 匿名类的名称是通过引擎赋予的
var_dump(get_class($objC));
 
// 声明的同一个匿名类,所创建的对象都是这个类的实例
var_dump(get_class(testA()) == get_class(testA()));

익명 클래스의 정적 멤버는 일반 클래스와 동일합니다. 정적 멤버는 인스턴스가 아닌 클래스에 속합니다.

// 静态变量
function testD()
{
    return new class{
        public static $name;
    };
}
$objD1 = testD();
$objD1::$name = 'objD1';
 
$objD2 = testD();
$objD2::$name = 'objD2';
 
echo $objD1::$name;

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP7의 익명 클래스 사용에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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