最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

了解ThinkPHP中initialize和construct的区别

来源:懂视网 责编:小采 时间:2020-11-02 18:28:46
文档

了解ThinkPHP中initialize和construct的区别

了解ThinkPHP中initialize和construct的区别:ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错
推荐度:
导读了解ThinkPHP中initialize和construct的区别:ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错

ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?

在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错误的,如果这样,tp为什么不用construct,而要自己弄一个ThinkPHP版的initialize构造函数呢?

相关学习推荐:thinkphp

自己试一下就知道两者的不同了。

a.php

class a{

 function __construct(){

 echo 'a';

 }

}

b.php(注意:这里构造函数没有调用parent::__construct();)

include 'a.php';

class b extends a{

 function __construct(){

 echo 'b';

 }

}

 

$test=new b();

运行结果:

b

可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。

如果b.php的构造函数加上parent::__construct(),就不同了。

include 'a.php';

class b extends a{

 function __construct(){

 parent::__construct();

 echo 'b';

 }

}

 

$test=new b();

那么输出结果是:

ab

此时才执行了父类的构造函数。

我们再来看看thinkphp的initialize()函数。

BaseAction.class.php

class BaseAction extends Action{

 public function _initialize(){

 echo 'baseAction';

 }

 
 

IndexAction.class.php

class IndexAction extends BaseAction{

 public function (){

 echo 'indexAction';

 }

运行Index下的index方法,输出结果:

baseActionindexAcition

可见,子类的_initialize方法自动调用父类的_initialize方法。而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();

这就是ThinkPHP中initialize和construct的不同。

文档

了解ThinkPHP中initialize和construct的区别

了解ThinkPHP中initialize和construct的区别:ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错
推荐度:
标签: 有什么 php 的区别
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top