摘要:方法是在任何方法執(zhí)行之前,都要執(zhí)行的,當(dāng)然也包括構(gòu)造函數(shù)。也就是說(shuō)如果存在函數(shù),調(diào)用對(duì)象的任何方法都會(huì)導(dǎo)致函數(shù)的自動(dòng)調(diào)用而構(gòu)造函數(shù)僅僅在創(chuàng)建對(duì)象的時(shí)候調(diào)用一次,跟其它方法調(diào)用沒(méi)有關(guān)系。默認(rèn)情況下,子類(lèi)的構(gòu)造函數(shù)不會(huì)自動(dòng)調(diào)用父類(lèi)的構(gòu)造函數(shù)。
_initialize()方法是在任何方法執(zhí)行之前,都要執(zhí)行的,當(dāng)然也包括 __construct構(gòu)造函數(shù)。 也就是說(shuō)如果存在_initialize()函數(shù),調(diào)用對(duì)象的任何方法都會(huì)導(dǎo)致_initialize()函數(shù)的自動(dòng)調(diào)用,而__construct()構(gòu)造函數(shù)僅僅在創(chuàng)建對(duì)象的時(shí)候調(diào)用一次,跟其它方法調(diào)用沒(méi)有關(guān)系。
__construct這里是雙劃線(xiàn),而_initialize()函數(shù)是單劃線(xiàn)
如果父子類(lèi)均有_initialize()函數(shù),則子類(lèi)覆蓋了父類(lèi)的,如果子類(lèi)沒(méi)有而父類(lèi)有,則子類(lèi)繼承父類(lèi)的。
默認(rèn)情況下,子類(lèi)的構(gòu)造函數(shù)不會(huì)自動(dòng)調(diào)用父類(lèi)的構(gòu)造函數(shù)。在調(diào)用子類(lèi)對(duì)象的_initialize()時(shí),也不會(huì)導(dǎo)致自動(dòng)調(diào)用父類(lèi)的_initialize()
實(shí)際編寫(xiě)子類(lèi)的構(gòu)造函數(shù)時(shí),一般都要加上父類(lèi)構(gòu)造函數(shù)的主動(dòng)調(diào)用parent::__construct(),否則會(huì)導(dǎo)致子類(lèi)對(duì)象空指針的異常,如Call to a member function assign() on a non-object。
故在一些系統(tǒng)后臺(tái)管理或者評(píng)論功能上,可使相關(guān)的控制器extends于base控制器:
Base.php:
error("請(qǐng)先登錄系統(tǒng)!","Login/index"); } } }
Article.php
這樣一來(lái),當(dāng)Article控制器的任何方法執(zhí)行前都會(huì)先執(zhí)行Base.php中的_initialize()方法進(jìn)行檢測(cè)是否已經(jīng)登錄,無(wú)需創(chuàng)建對(duì)象。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/29257.html
摘要:函數(shù)的出現(xiàn)是為了我們可以在子類(lèi)中同時(shí)調(diào)用父類(lèi)與子類(lèi)的構(gòu)造函數(shù)。而在父類(lèi)經(jīng)過(guò)特別處理后,本身就就可以完成這個(gè)功能了,其實(shí)我認(rèn)為的函數(shù)本意就是用來(lái)在需要同時(shí)調(diào)用父類(lèi)與子類(lèi)構(gòu)造函數(shù)時(shí)用的。 最近在學(xué)習(xí)ThinkPHP框架,看到_initialize()函數(shù),也正好做個(gè)小總結(jié) 簡(jiǎn)單看了谷歌,百度上的教程,感覺(jué)噼里啪啦說(shuō)了好多,全在進(jìn)行測(cè)試,都沒(méi)說(shuō)到點(diǎn)子上~ 實(shí)驗(yàn)版本:ThinkPHP 3.2....
摘要:延伸如果子類(lèi)繼承了父類(lèi)后,重寫(xiě)了構(gòu)造方法,注意調(diào)用父類(lèi)的哦,否則是使用不了的,代碼如下其他代碼總結(jié)一個(gè)簡(jiǎn)單的小設(shè)計(jì),這里拋磚引玉的分析下,希望對(duì)大家有幫助。 前言 _initialize() 這個(gè)方法在官方手冊(cè)里是這樣說(shuō)的: 如果你的控制器類(lèi)繼承了 hinkController類(lèi)的話(huà),可以定義控制器初始化方法_initialize,在該控制器的方法調(diào)用之前首先執(zhí)行。 其實(shí)不止5,在之前...
摘要:以上是服務(wù)啟動(dòng)過(guò)程中的主體設(shè)計(jì),其中包括了各種組件的實(shí)例化,如對(duì)象池等。 EasySwoole 服務(wù)啟動(dòng)過(guò)程以及主體設(shè)計(jì)流程源碼解析 本文主要講解EasySwoole 服務(wù)的啟動(dòng)過(guò)程,會(huì)通過(guò)源碼片段講解主體的設(shè)計(jì)流程 命令啟動(dòng) 當(dāng)我們通過(guò)php easyswoole start啟動(dòng)EasySwoole 服務(wù)時(shí),命令真正到達(dá)的文件是 easyswoole項(xiàng)目vendoreasyswool...
摘要:如果我們把這樣的定義放在全局代碼中,解析器會(huì)把函數(shù)當(dāng)作聲明,因?yàn)樗躁P(guān)鍵字開(kāi)頭,在第一種情況中,我們會(huì)得到,因?yàn)槲覀內(nèi)鄙俸瘮?shù)名。 原文 ECMA-262-3 in detail. Chapter 5. Functions. 簡(jiǎn)介 在這篇文章中,我們將討論一個(gè)ESCMAScript對(duì)象,函數(shù)。我們將討論不同類(lèi)型的函數(shù),每個(gè)類(lèi)型是如何影響環(huán)境中的變量對(duì)象(variables object)...
摘要:有了的靜態(tài)延遲綁定功能,可以在運(yùn)行時(shí)動(dòng)態(tài)確定歸屬的類(lèi)。與是被討論最多,也是最容易引起誤用的組合。的用途看完與上述三個(gè)關(guān)鍵字的區(qū)別,的用途是不是呼之即出一句話(huà)總結(jié),那就是總是指向當(dāng)前類(lèi)及類(lèi)實(shí)例。 轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/self-in-php/ PHP群里有人詢(xún)問(wèn)self關(guān)鍵字的用法,答案是比較明顯的:靜態(tài)成員函數(shù)內(nèi)不能用this調(diào)用非成員函數(shù),但可以用...
閱讀 3216·2021-11-25 09:43
閱讀 3219·2021-11-23 09:51
閱讀 3531·2019-08-30 13:08
閱讀 1585·2019-08-29 12:48
閱讀 3606·2019-08-29 12:26
閱讀 412·2019-08-28 18:16
閱讀 2577·2019-08-26 13:45
閱讀 2443·2019-08-26 12:15