Comment simuler plusieurs constructeurs en PHP sans plusieurs fonctions `__construct` ?

Patricia Arquette
Libérer: 2024-11-19 18:13:03
original
864 Les gens l'ont consulté

How to Simulate Multiple Constructors in PHP Without Multiple `__construct` Functions?

Constructeurs PHP multiples : exploration d'approches alternatives

Les limitations de PHP avec plusieurs constructeurs utilisant différentes signatures d'arguments posent un défi aux programmeurs cherchant à initialiser des objets avec différentes sources de données. Pour résoudre ce problème, nous examinons une approche recommandée qui exploite les méthodes d'assistance statiques.

Plutôt que de définir plusieurs fonctions __construct, nous définissons un constructeur de base qui initialise les éléments essentiels. Ensuite, nous créons des méthodes statiques nommées withID et withRow, qui prennent des arguments spécifiques et remplissent en interne les propriétés de l'objet à l'aide de méthodes telles que loadByID et fill.

Voici un exemple :

class Student
{
    public function __construct() {
        // Allocate common stuff
    }

    public static function withID(int $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(int $id) {
        // Perform database query and fill instance properties
    }

    protected function fill(array $row) {
        // Populate properties from array
    }
}
Copier après la connexion

Avec cette approche , vous pouvez initialiser des objets en fonction d'informations spécifiques :

$student1 = Student::withID(123);
$student2 = Student::withRow(['id' => 456, 'name' => 'John Doe']);
Copier après la connexion

Cette méthode fournit un moyen structuré et flexible de gérer plusieurs fonctionnalités de type constructeur, évitant ainsi le besoin de constructeurs trop complexes

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