>백엔드 개발 >PHP 문제 >PHP의 클래스 이름과 동일한 방법은 무엇입니까

PHP의 클래스 이름과 동일한 방법은 무엇입니까

青灯夜游
青灯夜游원래의
2021-06-07 13:20:473175검색

PHP에서는 클래스 이름과 메서드 이름이 동일할 수 있습니다. 메서드 이름과 클래스 이름이 동일하고 "__construct"가 없으면 해당 메서드가 생성자로 간주됩니다. PHP 생성자는 클래스의 특수 함수입니다. new 연산자를 사용하여 클래스의 인스턴스를 생성하면 생성자가 자동으로 호출됩니다.

PHP의 클래스 이름과 동일한 방법은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

Constructor

__construct ( mixed ...$values = "" ) : void

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

참고: 생성자가 하위 클래스에 정의된 경우 해당 상위 클래스의 생성자는 암시적으로 호출되지 않습니다. 상위 클래스의 생성자를 실행하려면 하위 클래스의 생성자에서 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 {
    // 继承 BaseClass 的构造函数
}
// In BaseClass constructor
$obj = new BaseClass();
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
// In BaseClass constructor
$obj = new OtherSubClass();
?>

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

PHP 5.3.3부터 네임스페이스에서 클래스 이름과 동일한 이름을 가진 메서드는 더 이상 생성자로 사용되지 않습니다. 네임스페이스에 없는 클래스는 영향을 받지 않습니다. 생성자는 해당 객체가 인스턴스화될 때 자동으로 호출되는 일반적인 메서드입니다. 따라서 필수이거나 유형이 있거나 기본값을 가질 수 있는 매개변수를 원하는 수만큼 정의할 수 있습니다. 생성자의 매개변수는 클래스 이름 뒤에 괄호 안에 표시됩니다.

예제 #2 생성자 매개변수 사용

<?php
class Point {
    protected int $x;
    protected int $y;
    public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
}
// 两个参数都传入
$p1 = new Point(4, 5);
// 仅传入必填的参数。 $y 会默认取值 0。
$p2 = new Point(4);
// 使用命名参数(PHP 8.0 起):
$p3 = new Point(y: 5, x: 4);
?>

클래스에 생성자가 없고 생성자의 매개변수가 필요하지 않은 경우 괄호를 생략할 수 있습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP의 클래스 이름과 동일한 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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