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
É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'; } }
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'; } }
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'; } }
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!