日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2023/12/18 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 initialize php,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()方法進行檢測是否已經登錄,無需創建對象。

相關推薦:

總結

以上是生活随笔為你收集整理的initialize php,php中_initialize()函数与 __construct()函数的区别说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。