Maison > développement back-end > tutoriel php > Comment obtenir la fonctionnalité de surcharge de constructeur en PHP ?

Comment obtenir la fonctionnalité de surcharge de constructeur en PHP ?

Mary-Kate Olsen
Libérer: 2024-11-15 11:25:03
original
916 Les gens l'ont consulté

How to Achieve Constructor Overload Functionality in PHP?

Surcharge de constructeurs en PHP : une solution optimale

En PHP, déclarer plusieurs constructeurs avec différentes signatures d'arguments dans une seule classe n'est pas réalisable. Cependant, il existe une solution pragmatique pour relever ce défi.

Considérez le scénario suivant :

class Student {
    protected $id;
    protected $name;
    // etc.

    public function __construct($id) {
        $this->id = $id;
        // other members remain uninitialized
    }

    public function __construct($row_from_database) {
        $this->id = $row_from_database->id;
        $this->name = $row_from_database->name;
        // etc.
    }
}
Copier après la connexion

Pour résoudre ce problème, l'approche suivante est recommandée :

<?php

class Student {
    public function __construct() {
        // allocate necessary resources
    }

    public static function withID($id) {
        $instance = new self();
        $instance->loadByID($id);
        return $instance;
    }

    public static function withRow(array $row) {
        $instance = new self();
        $instance->fill($row);
        return $instance;
    }

    protected function loadByID($id) {
        // fetch data from database
        $row = my_awesome_db_access_stuff($id);
        $this->fill($row);
    }

    protected function fill(array $row) {
        // populate properties from array
    }
}

?>
Copier après la connexion

Dans cette solution, au lieu de créer plusieurs constructeurs, des méthodes d'assistance statiques sont utilisées. En invoquant ces méthodes, de nouvelles instances Student peuvent être créées et initialisées avec des valeurs spécifiques :

// Create a student with a known ID
$student = Student::withID($id);

// Create a student using a database row array
$student = Student::withRow($row);
Copier après la connexion

Cette approche évite la complexité potentielle du codage et les problèmes de maintenance associés à la présence de plusieurs constructeurs dans une seule classe 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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal