익명 클래스, 가져온 클래스, php7의 클로저 사용과 같은 새로운 기능 소개

伊谢尔伦
풀어 주다: 2023-03-11 15:10:01
원래의
2608명이 탐색했습니다.

익명 클래스(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, &#39;A&#39;); // 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿