Maison >développement back-end >Problème PHP >Quelle est la même méthode avec le nom de classe en PHP

Quelle est la même méthode avec le nom de classe en PHP

青灯夜游
青灯夜游original
2021-06-07 13:20:473176parcourir

En PHP, le nom de la classe et le nom de la méthode peuvent être identiques. Si le nom de la méthode et le nom de la classe sont identiques et qu'il n'y a pas de "__construct", alors la méthode sera considérée comme le constructeur. Le constructeur PHP est une fonction spéciale dans une classe Lorsque vous utilisez l'opérateur new pour créer une instance d'une classe, le constructeur sera appelé automatiquement.

Quelle est la même méthode avec le nom de classe en PHP

L'environnement d'exploitation de ce tutoriel : Système Windows 7, PHP version 7.1, ordinateur DELL G3

Constructeur

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

PHP permet aux développeurs de définir une méthode en tant que constructeur dans une classe. Les classes avec un constructeur appelleront cette méthode à chaque fois qu'un nouvel objet est créé, elle est donc très appropriée pour effectuer un travail d'initialisation avant d'utiliser l'objet.

Remarque : Si un constructeur est défini dans une sous-classe, le constructeur de sa classe parent ne sera pas appelé implicitement. Pour exécuter le constructeur de la classe parent, vous devez appeler parent::__construct() dans le constructeur de la classe enfant. Si la sous-classe ne définit pas de constructeur, celle-ci sera héritée de la classe parent comme une méthode de classe ordinaire (si elle n'est pas définie comme privée).

Exemple #1 Constructeur en héritage

<?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();
?>

Contrairement à d'autres méthodes, lorsque __construct() est remplacé par une méthode avec des paramètres différents de ceux de la classe parent __construct(), PHP ne génère pas un message d'erreur E_STRICT.

Depuis PHP 5.3.3, dans l'espace de noms, les méthodes portant le même nom que le nom de la classe ne sont plus utilisées comme constructeurs. Les classes qui ne sont pas dans l'espace de noms ne sont pas affectées. Le constructeur est une méthode normale qui est automatiquement appelée lorsque l'objet correspondant est instancié. Par conséquent, n'importe quel nombre de paramètres peut être défini, qui peuvent être requis, avoir des types ou des valeurs par défaut. Les paramètres du constructeur sont placés entre parenthèses après le nom de la classe.

Exemple n°2 utilisant les paramètres du constructeur

<?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);
?>

Si une classe n'a pas de constructeur et que les paramètres du constructeur ne sont pas requis, les parenthèses peuvent être omises.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn