Maison > cadre php > PensezPHP > Comprendre la différence entre initialiser et construire dans ThinkPHP

Comprendre la différence entre initialiser et construire dans ThinkPHP

coldplay.xixi
Libérer: 2020-08-12 17:15:37
avant
2040 Les gens l'ont consulté

Comprendre la différence entre initialiser et construire dans ThinkPHP

Les fonctions initialize() et construct() dans ThinkPHP peuvent être comprises comme des constructeurs. La première est unique au framework TP, et la seconde est le constructeur php, donc voici ce que c'est. la différence entre les deux ?

En recherchant sur Internet, de nombreuses réponses sont que les deux sont identiques. L'initialisation dans ThinkPHP est équivalente à la construction de PHP. Si oui, pourquoi n'utilise-t-il pas la construction. et créer une version ThinkPHP par elle-même ? Qu'en est-il du constructeur d'initialisation ?

Recommandations d'apprentissage associées : thinkphp

Essayez-le vous-même et vous connaîtrez la différence entre les deux .

a.php

class a{

  function __construct(){

    echo 'a';

  }

}
Copier après la connexion

b.php (Remarque : le constructeur ici n'appelle pas parent::__construct();)

include 'a.php';

class b extends a{

  function __construct(){

    echo 'b';

  }

}

 

$test=new b();
Copier après la connexion

Résultat d'exécution :

b

On peut voir que bien que la classe b hérite de la classe a, les résultats de sortie prouvent que le programme n'exécute que le constructeur de la classe b et n'exécute pas automatiquement le constructeur de la classe parent .

Si le constructeur de b.php est ajouté avec parent::__construct(), ce sera différent.

include 'a.php';

class b extends a{

  function __construct(){

    parent::__construct();

    echo 'b';

  }

}

 

$test=new b();
Copier après la connexion

Ensuite, le résultat de sortie est :

ab

A ce moment, le constructeur de la classe parent est exécuté .

Jetons un coup d'œil à la fonction initialize() de thinkphp.

BaseAction.class.php

class BaseAction extends Action{

  public function _initialize(){

       echo 'baseAction';

  }

 
 

IndexAction.class.php

class IndexAction extends BaseAction{

  public function (){

       echo 'indexAction';

    }
Copier après la connexion

Exécutez la méthode d'index sous Index et le résultat de sortie est :

baseActionindexAcition

est visible, La méthode _initialize de la sous-classe appelle automatiquement la méthode _initialize de la classe parent. Quant à la construction du constructeur PHP, si vous souhaitez appeler une méthode de la classe parent, vous devez appeler explicitement parent::__construct();

dans le constructeur de la sous-classe. C'est la différence entre initialiser et construire dans ThinkPHP.

Recommandations associées : Cours vidéo de programmation

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:jb51.net
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