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

Comprendre la différence entre initialiser et construire dans ThinkPHP

coldplay.xixi
coldplay.xixiavant
2020-08-12 17:15:371970parcourir

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';

  }

}

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();

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();

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';

    }

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer