마법 방법을 사용하면 클래스에서 특정 이벤트를 자동으로 처리 할 수 있습니다. 예를 들어, __construct ()는 개체 초기화에 사용되며 __destruct ()는 리소스를 자유롭게하는 데 사용됩니다.
class MyClass {
public function __construct() {
// 개체 초기화 코드
}
public function __destruct() {
// 코드를 정리하십시오
}
}
발전기는 모든 데이터를 한 번에로드하지 않고 큰 데이터 세트를 가로 지르는 효율적인 방법을 제공합니다.
function numbers() {
for ($i = 0; $i < 10; $i++) {
yield $i;
}
}
foreach (numbers() as $number) {
echo $number;
}
클로저는 코드 유연성을 향상시키기 위해 매개 변수로 전달되고 변수 또는 객체에 바인딩 될 수있는 익명 함수입니다.
$greeting = function($name) {
return "Hello, $name!";
};
echo $greeting("John");
익명 클래스는 이름 지정없이 클래스의 빠른 생성을 지원하여 코드 구조를 단순화합니다.
$object = new class {
public function greet($name) {
return "Hello, $name!";
}
};
echo $object->greet("Jane");
특성은 상속없이 기존 클래스에 메소드와 속성을 추가하고 코드 재사용 성을 향상시킬 수 있습니다.
trait Greeting {
public function greet($name) {
return "Hello, $name!";
}
}
class MyClass {
use Greeting;
}
$object = new MyClass();
echo $object->greet("Alice");
호출기는 생성기를 통해 구현되며 메모리 효율을 향상시키기 위해 대량의 데이터가 배치로 얻어집니다.
function paginate($data, $perPage) {
$currentPage = 1;
while ($currentPage <= ceil(count($data) / $perPage)) {
$offset = ($currentPage - 1) * $perPage;
yield array_slice($data, $offset, $perPage);
$currentPage++;
}
}
$data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
foreach (paginate($data, 3) as $page) {
print_r($page);
}
위의 내용은 PHP 인터뷰에서 일반적이고 실용적인 고급 기술을 다룹니다. 이러한 지식 포인트를 마스터하면 인터뷰 문제에 더 잘 대응하고 개발 효율성을 향상시킬 수 있습니다.