> 백엔드 개발 > PHP 문제 > PHP 생성자 메소드의 역할

PHP 생성자 메소드의 역할

藏色散人
풀어 주다: 2023-02-23 10:58:02
원래의
3918명이 탐색했습니다.

PHP 생성자 메소드의 역할

PHP 생성자 메소드의 역할

PHP 생성자 메소드는 객체 생성시 객체를 초기화하는데 사용되는 즉, 객체 멤버변수에 초기값을 할당하여 항상 사용된다. new 연산자와 함께 명령문에 객체를 생성합니다. 특수 클래스에는 여러 개의 생성자가 있을 수 있으며, 이는 매개 변수의 수나 매개 변수의 유형, 즉 생성자의 오버로드에 따라 구별될 수 있습니다.

관련 권장 사항: [PHP Tutorial]

Constructor

__construct ([ mixed $args [, $... ]] ) : void
로그인 후 복사

PHP 5를 사용하면 개발자가 클래스의 생성자로 메서드를 정의할 수 있습니다. 생성자가 있는 클래스는 새 객체가 생성될 때마다 이 메서드를 호출하므로 객체를 사용하기 전에 일부 초기화 작업을 수행하는 데 매우 적합합니다.

참고:

생성자가 하위 클래스에 정의된 경우 해당 상위 클래스의 생성자는 암시적으로 호출되지 않습니다. 상위 클래스의 생성자를 실행하려면 하위 클래스의 생성자에서 parent::__construct()를 호출해야 합니다. 하위 클래스가 생성자를 정의하지 않으면 일반 클래스 메서드와 마찬가지로 상위 클래스에서 상속됩니다(private으로 정의되지 않은 경우).

예제 1 새로운 표준 생성자 사용

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}
class OtherSubClass extends BaseClass {
    // inherits BaseClass&#39;s constructor
}
// In BaseClass constructor
$obj = new BaseClass();
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
// In BaseClass constructor
$obj = new OtherSubClass();
?>
로그인 후 복사

이전 버전과의 호환성을 위해 PHP 5는 클래스에서 __construct() 함수를 찾을 수 없고 상위 클래스에서 함수를 상속하지 않는 경우 시도합니다. 이전 스타일의 생성자를 찾습니다. 클래스와 이름이 같은 함수입니다. 따라서 호환성 문제가 발생하는 유일한 경우는 클래스에 이미 __construct()라는 메서드가 있지만 다른 목적으로 사용되는 경우입니다.

다른 메서드와 달리, PHP는 __construct()가 부모 클래스 __construct()와 다른 매개 변수를 가진 메서드로 재정의될 때 E_STRICT 오류 메시지를 생성하지 않습니다.

PHP 5.3.3부터 네임스페이스에서 클래스 이름과 동일한 이름을 가진 메서드는 더 이상 생성자로 사용되지 않습니다. 이 변경 사항은 네임스페이스에 없는 클래스에는 영향을 주지 않습니다.

예 2

<?php
namespace Foo;
class Bar {
    public function Bar() {
        // treated as constructor in PHP 5.3.0-5.3.2
        // treated as regular method as of PHP 5.3.3
    }
}
?>
로그인 후 복사

위 내용은 PHP 생성자 메소드의 역할의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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