>백엔드 개발 >PHP 튜토리얼 >PHP 객체 지향(OOP) - 다양한 PHP 버전의 구성 방법 상속 및 호환성

PHP 객체 지향(OOP) - 다양한 PHP 버전의 구성 방법 상속 및 호환성

WBOY
WBOY원래의
2016-08-08 09:23:201196검색

PHP4.x 버전:

PHP 4.x의 생성자 이름은 클래스 이름과 동일합니다.

하위 클래스의 생성자 이름이 하위 클래스 이름과 동일합니다(말도 안되는 소리).

상위 클래스의 생성자는 하위 클래스에서 자동으로 실행되지 않습니다.

하위 클래스에서 상위 클래스의 생성자를 실행하려면 다음과 유사한 문을 실행해야 합니다.

$this->[상위 클래스의 생성자 이름( )]

class base1 {
function base1() {
echo '이것은 base1 구성입니다';
}
}
class class1은 base1을 확장합니다. {
function class1() {
$this -> );
echo '이것은 class1 구성입니다';
}
}
$c1 = new class1;

PHP5.x 버전:

PHP5.0 이상에서는 클래스 기능이 대폭 확장되었습니다. 클래스 생성자의 이름은 __construct()로 동일하게 지정됩니다.

하위 클래스의 생성자 이름도 __construct()입니다(또한 넌센스).

상위 클래스의 생성자가 하위 클래스에서 실행되는지 여부는 두 가지 상황이 있습니다.

1 하위 클래스가 생성자를 정의하지 않는 경우 __construct(), 상위 클래스의 생성자 class will 함수는 기본적으로 상속되어 자동으로 실행됩니다.

2. 하위 클래스가 생성자 __construct()를 정의하는 경우 생성자의 이름도 __construct()이기 때문에 하위 클래스의 생성자가 실제로 상위 클래스의 생성자를 재정의합니다. 이때 실행되는 것은 서브클래스의 생성자이다.

이때, 하위 클래스에서 상위 클래스의 생성자를 실행하려면 다음과 유사한 명령문을 실행해야 합니다.

parent::__construct();

class base2 {
function __construct() {
echo '이것은 base2 구성입니다';
}
function __destruct() {}
}
class class2 확장 base2 {
function __construct() {
parent::__construct ();
echo '이것은 class2 구성입니다';
}
}

참고 parent:: __construct(); 문은 반드시 하위 클래스의 생성자에 배치될 필요는 없습니다. 하위 클래스의 생성자에 배치하면 하위 클래스가 인스턴스화될 때 자동으로 실행됩니다.

PHP4.0과 5.0 클래스 생성자 간의 호환성 문제:

PHP 5.0 이상에서는 버전 4.0 생성자의 정의 규칙도 호환됩니다. 4.0 생성자와 __construct() 함수가 모두 정의된 경우 __construct() 함수가 우선합니다.

클래스 코드가 PHP4.0과 5.0 모두 호환되도록 하려면 다음 방법을 채택할 수 있습니다.

class class3 {
function __construct() // PHP5.0의 경우
{
echo '이것은 class2 구성입니다';
}
function class3() / /for PHP4.0
{
$this -> __construct();
}
}
$c3 = new class3;

위 내용은 "땅콩튀김"에서 인용한 내용입니다. 형님 공유해주셔서 감사합니다.

위 내용은 내용적인 측면을 포함하여 PHP 객체지향(OOP) 상속과 다양한 PHP 버전의 구성 방법의 호환성을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.