PHP 7 이후에서는 클래스 이름과 동일한 메소드를 사용하여 생성자가 구식으로 간주됩니다. 이 사용법은 이전 버전의 PHP에서 합법적이고 공통적이지만, 일관성과 유지 가능성을 향상시키기 위해 언어 개발을 통해 PHP 관계자는 더 이상이 작문 방법을 권장하지 않습니다.
PHP 5 이하에서 개발자는 일반적으로 클래스 이름과 동일한 방식으로 생성자를 정의합니다.
class MyClass {
function MyClass() {
// 생성자 로직
}
}
그러나 PHP 7 이므로이 방법은 다음 경고를 트리거합니다.
더 이상 사용되지 않는 : 클래스와 동일한 이름을 가진 방법은 생성자가 아닙니다.
즉, 코드가 여전히 실행되는 동안 향후 버전은이 구문을 완전히 제거 할 수 있으므로 즉시 조정하는 것이 좋습니다.
위의 경고를 해결하기 위해 실제 프로젝트 상황에 따라 다음 방법을 선택할 수 있습니다.
가장 직접적인 방법은 PHP의 사전 정의 된 __construct () 메소드로 생성자 이름을 수정하는 것입니다. 예제는 다음과 같습니다.
class MyClass {
function __construct() {
// 생성자 로직
}
}
이 방법은 모든 지원되는 PHP 버전에서 작동하며 권장되는 표준 실습입니다.
이전 프로젝트 환경과 호환 해야하는 경우 버전 _compare 함수를 사용하여 PHP 버전 판단을하여 적절한 생성자 구현을 선택할 수 있습니다.
class MyClass {
function MyClass() {
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
// PHP 7위 버전의 논리
} else {
// PHP 7다음 버전의 논리
}
}
}
그러나이 솔루션은 유지 보수에 사용하기에 더 적합하며 새로운 프로젝트에는 권장되지 않습니다.
또 다른 비공식적 인 방법은 PHPDOC 주석을 통해 생성자의 목적을 식별하는 것입니다.
class MyClass {
/**
* MyClass constructor.
*/
function MyClass() {
// 생성자 로직
}
}
이 관행은 코드 가독성에 도움이되지만 PHP 통역사의 경고를 제거하지는 않으며 팀 내부 식별에만 적용됩니다.
더 이상 사용되지 않은 프롬프트에 직면 : 클래스와 동일한 이름을 가진 메소드는 생성자가되지 않으므로 개발자는 프로젝트 호환성 및 유지 보수 비용을 기반으로 다음 방법을 선택해야합니다.
코드 품질을 향상시키고 향후 비 호환성 문제를 피하기 위해 프로젝트의 모든 생성자를 가능한 빨리 __construct () 형식으로 통합하는 것이 좋습니다.