Maison > développement back-end > tutoriel php > Analyse de l'utilisation de initialize() et du constructeur construct() dans ThinkPHP

Analyse de l'utilisation de initialize() et du constructeur construct() dans ThinkPHP

不言
Libérer: 2023-03-30 14:16:01
original
2936 Les gens l'ont consulté

Cet article présente principalement l'utilisation de _initialize() et du constructeur de classe _construct() dans ThinkPHP. Il analyse la méthode de construction de sous-classes lors de l'initialisation des classes dans ThinkPHP sous forme d'exemples. . Les amis qui en ont besoin peuvent se référer à

pour des concepts plus importants en conception. Cet article analyse __initialize() et le constructeur de classe __construct() dans ThinkPHP avec des exemples. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :

__construct dans thinkphp ne peut pas être utilisé avec désinvolture, car votre classe de module hérite de la classe supérieure et la classe supérieure est définie

1 ; Fonctions dans la classe php, le constructeur de la classe php est uniquement __construct().

2 Initialisation de la classe : Si la sous-classe a son propre constructeur (__construct()), elle appelle le sien pour l'initialisation. . Sinon, appelez le constructeur de la classe parent pour effectuer sa propre initialisation.

3. Lorsque la sous-classe et la classe parent ont des fonctions __construct(), si vous souhaitez appeler la __constrcut() de la classe parent en même temps lors de l'initialisation de la sous-classe, vous pouvez utiliser parent dans la sous-classe : :__construct().

Si nous écrivons deux classes, comme suit :

class Action{  
    public function __construct()  
    {  
        echo 'hello Action';  
    }  
}  
class IndexAction extends Action{  
    public function __construct()  
    {  
        echo 'hello IndexAction';  
    }  
}  
$test = new IndexAction;  
//output --- hello IndexAction
Copier après la connexion

Évidemment, lors de l'initialisation de la sous-classe IndexAction, elle appellera son propre constructeur, donc la sortie est 'bonjour IndexAction ', mais modifiez la sous-classe en :

class IndexAction extends Action{  
    public function __initialize()  
    {  
        echo 'hello IndexAction';  
    }  
}
Copier après la connexion

Ensuite, le résultat est 'hello Action', car la sous-classe IndexAction n'a pas son propre constructeur, si je veux initialiser la sous-classe, qu'en est-il appeler le constructeur de la classe parent en même temps ?

class IndexAction extends Action{  
    public function __construct()  
    {  
        parent::__construct();  
        echo 'hello IndexAction';  
    }  
}
Copier après la connexion

De cette façon, deux phrases peuvent être sorties en même temps. Bien sûr, une autre façon consiste à appeler la méthode de la sous-classe dans le. classe parent.

class Action{  
    public function __construct()  
    {  
        if(method_exists($this,'hello'))  
        {  
            $this -> hello();  
        }  
        echo 'hello Action';  
    }  
}  
class IndexAction extends Action{  
    public function hello()  
    {  
        echo 'hello IndexAction';  
    }  
}
Copier après la connexion

De cette façon, deux phrases peuvent être affichées en même temps, et la méthode hello() dans la sous-classe ici est similaire à __initialize() dans ThinkPHP.

Par conséquent, l'apparition de __initialize() dans ThinkPHP est uniquement destinée à permettre aux programmeurs d'éviter l'utilisation fréquente de parent::__construct() lors de l'écriture de sous-classes, et en même temps d'appeler correctement le constructeur de la classe parent dans le framework. Par conséquent, lorsque nous initialisons une sous-classe dans ThnikPHP, nous devons utiliser __initialize() au lieu de __construct(). Bien sûr, vous pouvez également modifier la fonction __initialize() en votre nom de fonction préféré en modifiant le framework.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Fonction move_uploaded_file() en PHP

Fonction constructeur _construct() de la classe dans ThinkPHP Différences de _initialize()

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