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

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

大家好,又见面了,我是全栈君。

_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

namespace app\admin\controller;

use think\Controller;

class Base extends Controller

{

    public function _initialize(){

        if(!session('username')){

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

        }

    }

}

Article.php

<?php

namespace app\Admin\controller;

use app\Admin\model\Article as ArticleModel;

use app\admin\controller\Base;

class Article extends Base

{

   ……… ………

}

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

相关推荐:

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112258.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【愚公系列】2022年03月 漏洞扫描与利用之AWVS「建议收藏」

    【愚公系列】2022年03月 漏洞扫描与利用之AWVS「建议收藏」实验步骤一首先需要添加一个扫描目标,先不进行登陆操作:设置爬虫扫描开始扫描得出网站目录如果需要账号密码则需要设置方式一:方式二:之后点击“save”,保存后就可以进行扫描备注:FullScan–使用FullScan来发起一个扫描的话,Acunetix会检查所有可能得安全漏洞。HighRishVulnerabilities–这个扫描选项将仅仅只会检查那些对web站点影响最大的缺陷漏洞。Cross-SiteScripting(XSS)–XXS漏洞扫描只会检测跨站

    2022年9月23日
    2
  • PAT刷题C语言1002——写出这个数

    PAT刷题C语言1002——写出这个数思路:首先要定义一个字符数组a[0]-a[9]应该对应:ling到shi的拼音对于测试数据一次取一位并进行累加sum,遇到0可以丢弃把sum按位取出对应数组做输出(要求sum的位数,遇到最后一位时候不能输出回车)参考答案:…

    2022年8月11日
    10
  • word在试图打开文件时遇到错误,一种解决办法[通俗易懂]

    word在试图打开文件时遇到错误,一种解决办法[通俗易懂]1.双击word打开时弹出错误窗口弹出错误,无法打开word;2.解决办法此时右键打开word的属性窗口:选择下面的解除锁定,点击;锁定解除后,就可以正常打开word进行查看了。

    2022年6月4日
    36
  • win10 wlan wifi 显示 无Internet连接,安全 连不上网;网络连接显示小地球,无Internet连接 但能上网,反正wlan的 各种病症,猛药解决

    win10 wlan wifi 显示 无Internet连接,安全 连不上网;网络连接显示小地球,无Internet连接 但能上网,反正wlan的 各种病症,猛药解决1、暴力重启:直接按电源键强制关机再开机;2、右键小地球,疑难解答并且执行3、360网络修复4、改这里的配置5、计算机管理,服务改这里的配置都改成自动6、win+rregedit\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet这个值改成17、netshwinsockresetcatalognetshinti…

    2022年7月27日
    10
  • 百家讲坛2001-2016年节目播出表-总目录「建议收藏」

    百家讲坛2001-2016年节目播出表-总目录「建议收藏」百家讲坛2001-2016年节目播出表-总目录            (2001.07.09—2016.1.14)    日期    节目内容    主讲人2001-7-9    美与物理学    杨振宁2001-7-10    实验物理与物理学前沿    丁肇中2001-7-11    唐宋咏春诗赏析    程郁缀2001-7-12    泰山美学    杨辛

    2022年4月29日
    114
  • Swagger注解-@ApiModel 和 @ApiModelProperty

    @ApiModel使用场景在实体类上边使用,标记类时swagger的解析类概述提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省属性属性名称数据类型默认值说明valueString类名为模型提供备用名称descriptionString“”提供详细的类描述parentClass<?>parentVoid…

    2022年4月8日
    206

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号