Heim > Backend-Entwicklung > PHP-Problem > Was ist die gleiche Methode mit Klassennamen in PHP?

Was ist die gleiche Methode mit Klassennamen in PHP?

青灯夜游
Freigeben: 2023-03-10 11:38:01
Original
3178 Leute haben es durchsucht

In PHP können der Klassenname und der Methodenname identisch sein. Wenn der Methodenname und der Klassenname identisch sind und kein „__construct“ vorhanden ist, wird die Methode als Konstruktor betrachtet. Der PHP-Konstruktor ist eine spezielle Funktion in einer Klasse. Wenn der Operator new zum Erstellen einer Instanz einer Klasse verwendet wird, wird der Konstruktor automatisch aufgerufen.

Was ist die gleiche Methode mit Klassennamen in PHP?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP Version 7.1, DELL G3-Computer

Konstruktor

__construct ( mixed ...$values = "" ) : void
Nach dem Login kopieren

PHP ermöglicht Entwicklern, eine Methode als Konstruktor in einer Klasse zu definieren. Klassen mit einem Konstruktor rufen diese Methode jedes Mal auf, wenn ein neues Objekt erstellt wird. Daher eignet sie sich sehr gut für einige Initialisierungsarbeiten vor der Verwendung des Objekts.

Hinweis: Wenn ein Konstruktor in einer Unterklasse definiert ist, wird der Konstruktor seiner übergeordneten Klasse nicht implizit aufgerufen. Um den Konstruktor der übergeordneten Klasse auszuführen, müssen Sie parent::__construct() im Konstruktor der untergeordneten Klasse aufrufen. Wenn die Unterklasse keinen Konstruktor definiert, wird sie wie eine gewöhnliche Klassenmethode von der übergeordneten Klasse geerbt (sofern sie nicht als privat definiert ist).

Beispiel #1 Konstruktor in der Vererbung

<?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();
?>
Nach dem Login kopieren

Im Gegensatz zu anderen Methoden generiert PHP keine E_STRICT-Fehlermeldung, wenn __construct() von einer Methode mit anderen Parametern als der übergeordneten Klasse __construct() überschrieben wird.

Seit PHP 5.3.3 werden im Namespace Methoden mit demselben Namen wie der Klassenname nicht mehr als Konstruktoren verwendet. Klassen, die nicht im Namespace liegen, sind nicht betroffen. Der Konstruktor ist eine normale Methode, die automatisch aufgerufen wird, wenn das entsprechende Objekt instanziiert wird. Daher können beliebig viele Parameter definiert werden, die erforderlich sein können, Typen haben oder Standardwerte haben können. Die Parameter des Konstruktors werden in Klammern hinter den Klassennamen gesetzt.

Beispiel #2 Konstruktorparameter verwenden

<?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);
?>
Nach dem Login kopieren

Wenn eine Klasse keinen Konstruktor hat und die Parameter des Konstruktors nicht erforderlich sind, können die Klammern weggelassen werden.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist die gleiche Methode mit Klassennamen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage