PHP7 이후 PHP에 익명 클래스 기능이 추가되었습니다. 익명 클래스와 익명 메서드는 PHP를 더욱 현대적인 언어로 만들고 코드 개발 작업을 더욱 편리하게 만듭니다. 다음 글은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!