객체 지향 스크립팅 언어로서 PHP8은 많은 새로운 기능과 개선 사항을 제공합니다. 가장 중요한 개선 사항 중 하나는 유형 선언의 향상, 특히 정적 방법의 반환 유형 선언에서 나온 것입니다. 이 기사는 PHP8의 새로운 기능을 통해 정적 메소드의 반환 유형을 더 잘 선언하고 해당 코드 예제를 제공하는 방법을 소개합니다.
이전 버전의 PHP에서 개발자는 int, String, Array 등과 같은 반환 유형 선언을 통해 함수 또는 메소드의 리턴 값 유형을 지정할 수 있습니다. PHP8은 정적 반환 유형을 도입하여 개발자가 정적 메소드의 반환 유형을 선언 할 수 있도록합니다. 이는 메소드의 반환 값이 해당 클래스 또는 하위 클래스의 인스턴스가 아니라 특정 클래스의 인스턴스임을 의미합니다.
다음은 정적 리턴 유형을 사용하여 정적 메소드의 리턴 유형을 선언하는 방법을 보여주는 예입니다. 정적 메소드 GetById가 포함 된 사용자라는 클래스가 있다고 가정 해 봅시다. 여기서 사용자 ID를 기반으로 사용자 인스턴스를 반환합니다.
class User {
public static function getById(int $id) : static {
// ~에 따르면ID쿼리 사용자 정보
// ...
// 만들다User인스턴스 및 반환
return new static();
}
}
위의 예에서는 정적 리턴 유형을 사용하여 사용자 인스턴스를 반환하도록 getByid 메소드를 선언했습니다. 정적 키워드를 사용하면 메소드가 호출되었을 때 실제 클래스의 반환 된 인스턴스가 있는지 확인하십시오.
정적 반환 유형의 중요한 장점은 상속 및 다형성과의 조합입니다. 하위 클래스에서 상위 클래스의 정적 메소드를 무시하면 리턴 유형이 자동으로 서브 클래스에 적응됩니다. 다음은 하위 클래스에서 상위 클래스를 무시하는 방법을 보여주는 예입니다.
class Admin extends User {
public static function getById(int $id) : static {
// ~에 따르면ID쿼리 관리자 정보
// ...
// 만들다Admin인스턴스 및 반환
return new static();
}
}
이 예에서는 관리자 서브 클래스를 만들고 getByid 메소드를 재정의했습니다. 관리자 클래스에서 리턴 유형을 관리자로 명시 적으로 선언하지는 않지만 정적 반환 유형의 사용으로 인해 반환 된 인스턴스가 자동으로 관리자 클래스의 인스턴스가됩니다.
정적 반환 유형은 상속에 중요한 역할을 할뿐만 아니라 다형성과 결합하여 유연성이 향상됩니다. 정적 방법을 통해 상위 클래스의 인스턴스를 반환하거나 실제 요구에 따라 아동 클래스의 인스턴스를 반환 할 수 있습니다. 다음은 정적 방법을 결합한 공장 패턴의 예입니다.
class Factory {
public static function createUser() : User {
// 만들다User인스턴스 및 반환
return new User();
}
}
class AdminFactory extends Factory {
public static function createUser() : Admin {
// 만들다Admin인스턴스 및 반환
return new Admin();
}
}
위의 코드에서는 사용자 인스턴스를 반환하는 정적 메소드 CreateUser가있는 공장 클래스를 만듭니다. 그런 다음 상속을 통해 adminfactory 클래스를 생성하고 CreateUser 메소드를 재정의하여 관리자 인스턴스를 반환합니다. 정적 반환 유형의 도움을 받아 부모 클래스의 정적 메소드에서 서브 클래스의 반환 인스턴스를 구현합니다.
PHP8의 정적 반환 유형 기능은 개발자에게 정적 메소드의 반환 유형을 선언 할 수있는보다 정확하고 유연한 방법을 제공합니다. 그것은 반환 유형의 선언을 더 명확하게 만들뿐만 아니라 상속 및 다형성과 결합 될 때 더 많은 유연성을 제공합니다. 정적 반환 유형을 사용하여 개발자는 정적 메소드의 리턴 유형을 더 잘 정의하고 코드의 가독성과 유지 보수 가능성을 향상시킬 수 있습니다.