php中_initialize()函数与 __construct()函数的区别说明

摘要:
_initialize()方法应在执行任何方法之前执行,包括__Construct构造函数。也就是说,如果有_Initialize()函数。调用对象的任何方法都会导致_自动调用initialize()函数,而_创建对象时只调用construct()构造函数一次,与其他方法调用无关。}这样,在执行Article控制器的任何方法之前,_ the initialize()方法会检测您是否已登录,而不会创建对象。

_initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数。 也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用,而__construct()构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系。

__construct这里是双划线,而_initialize()函数是单划线

如果父子类均有_initialize()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的。

默认情况下,子类的构造函数不会自动调用父类的构造函数。在调用子类对象的_initialize()时,也不会导致自动调用父类的_initialize()

实际编写子类的构造函数时,一般都要加上父类构造函数的主动调用parent::__construct(),否则会导致子类对象空指针的异常

如Call to a member function assign() on a non-object。

故在一些系统后台管理或者评论功能上,可使相关的控制器extends于base控制器:

Base.php:

<?php

namespaceappadmincontroller;

usethinkController;

classBase extendsController

{

publicfunction_initialize(){

if(!session('username')){

$this->error('请先登录系统!','Login/index');

}

}

}

Article.php

<?php

namespaceappAdmincontroller;

useappAdminmodelArticle asArticleModel;

useappadmincontrollerBase;

classArticle extendsBase

{

……… ………

}

这样一来,当Article控制器的任何方法执行前都会先执行Base.php中的_initialize()方法进行检测是否已经登录,无需创建对象。

相关推荐:

php中explode()函数与strtok()函数的区别

php中method_exists()与is_callable()函数的区别分析

http://www.php.cn/php-weizijiaocheng-408637.html

免责声明:文章转载自《php中_initialize()函数与 __construct()函数的区别说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL高级知识(二)——Join查询Android OpenGL ES(七)基本几何图形定义 .下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《C#并发编程经典实例》笔记

1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期研读了不少书籍,其中《C#并发编程经典实例》给我的印象还是比较深刻的。当然,这可能是由于近段日子看的书大多嘴炮大于实际,如《Head First设计...

各种实用的 PHP 开源库推荐【转】

 转自: https://my.oschina.net/editorial-story/blog/882780 PHP 是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域,是大多数后端开发者的首选。PHP 作为最受...

PHP curl_init函数

curl_init — 初始化一个cURL会话 说明 resource curl_init ([string$url =NULL ]) 初始化一个新的会话,返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用。 参数 url 如果提供了该参数,CURLOPT_URL 选项将会被设置成这个值。你...

Windows7&amp;amp;IIS7.5部署Discuz全攻略

组长说在内网部署一个论坛,这可难不倒我,装个Discuz嘛。部署环境就一台普通的PC,四核i3,Windows7。这就开搞了。 准备工作 系统是Windows 7 专业版,自带IIS7.5(家庭版不带)。IIS7开始带了FastCgi,对PHP支持好了许多,所以也不必装Apache啦。下载 PHP 5.4、 MySQL 5.5 以及Discuz X2。 对...

PHP图片上传程序(完整版)

从PHP100上搜刮来的,功能很强大。几乎考虑到了每个细节,与大家分享!~~~ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <?php   /************************************************...

apache中配置php支持模块模式、cgi模式和fastcgi模式

首先安装apache、mysql和php,依次顺序安装。 1.apache、mysql的安装比较简单,略过 2. php的安装,我安装的是php5.3.6内置了php-fpm,所以不需要再单独下补丁了。 ./configure –prefix=/usr/local/php5 /--with-mysql=/usr/local/mysql /--enable-...