익명 클래스(PHP 7)
이제 새 클래스를 통해 익명 클래스 인스턴스화를 지원합니다. 이 클래스는 일부 "사용 후 소각" 전체 클래스 정의를 대체하는 데 사용할 수 있습니다.
<?php interface Logger { public function log(string $msg); } class Application { private $logger; public function getLogger(): Logger { return $this->logger; } public function setLogger(Logger $logger) { $this->logger = $logger; } } $app = new Application; $app->setLogger(new class implements Logger { public function log(string $msg) { echo $msg; } }); var_dump($app->getLogger()); ?>
위 루틴은 다음을 출력합니다:
object(class@anonymous)#2 (0) {
}
Closure::call() (PHP 7)
Closure::call( )는 이제 성능이 향상되어 객체의 클로저에 메서드를 임시로 바인딩하고 호출하는 짧고 간결한 방법을 제공합니다.
<?php class A {private $x = 1;} // Pre PHP 7 code $getXCB = function() {return $this->x;}; $getX = $getXCB->bindTo(new A, 'A'); // intermediate closure echo $getX(); // PHP 7+ code $getX = function() {return $this->x;}; echo $getX->call(new A);
위 루틴은 다음을 출력합니다:
1
1
unserialize()에 대한 필터링 제공(PHP 7)
이 기능은 신뢰할 수 없는 데이터를 압축 해제하는 보다 안전한방법을 제공하기 위한 것입니다. 화이트리스트를 통해 잠재적인 코드 삽입을 방지합니다.
<?php // converts all objects into PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => false]); // converts all objects into PHP_Incomplete_Class object except those of MyClass and MyClass2 $data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]); // default behaviour (same as omitting the second argument) that accepts all classes $data = unserialize($foo, ["allowed_classes" => true]);
그룹 사용 선언(PHP 7)
동일한 네임스페이스에서 가져온 클래스, 함수 및 상수를 이제 단일 use 문으로 한 번에 가져올 수 있습니다.
아아아아위 내용은 익명 클래스, 가져온 클래스, php7의 클로저 사용과 같은 새로운 기능 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!