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

青灯夜游
Libérer: 2023-03-10 11:38:01
original
3192 Les gens l'ont consulté

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
Copier après la connexion

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();
?>
Copier après la connexion

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);
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal