php中 initialize 函式與

2021-09-26 10:04:32 字數 1198 閱讀 2344

_initialize()方法是在任何方法執行之前,都要執行的,當然也包括 __construct建構函式。 也就是說如果存在_initialize()函式,呼叫物件的任何方法都會導致_initialize()函式的自動呼叫,而__construct()建構函式僅僅在建立物件的時候呼叫一次,跟其它方法呼叫沒有關係。

__construct這裡是雙劃線,而_initialize()函式是單劃線

如果父子類均有_initialize()函式,則子類覆蓋了父類的,如果子類沒有而父類有,則子類繼承父類的。

預設情況下,子類的建構函式不會自動呼叫父類的建構函式。在呼叫子類物件的_initialize()時,也不會導致自動呼叫父類的_initialize()

實際編寫子類的建構函式時,一般都要加上父類建構函式的主動呼叫parent::__construct(),否則會導致子類物件空指標的異常

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

base.php:

<?php

namespace

usethink\controller;

classbaseextendscontroller

}

}

article.php

<?php

namespace

useasarticlemodel;

use

classarticleextendsbase

這樣一來,當article控制器的任何方法執行前都會先執行base.php中的_initialize()方法進行檢測是否已經登入,無需建立物件。

thinkphp中的 initialize方法

子類的 initialize方法自動呼叫父類的 initialize方法。而php的建構函式construct,如果要呼叫父類的方法,必須在子類建構函式顯示呼叫parent construct class baseaction extends action 子類如果沒有 initialize方法,則...

PHP中include與require函式的區別

require php 這個函式通常放在php程式的最前面,php程式在執行前,就會先讀入require所指定引入的檔案,使它變成php程式網頁的一部分。常用的函式,亦可以這個方法將它引入。include php 這個函式一般是放在流程控制的處理部分中。php程式在讀到include的檔案時,才將它...

iOS中init和initialize的特點

在nsobject.h中有兩個類方法 void load void initalize initialize和load,我們並不需要在這兩個方法的實現中使用super呼叫父類的方法。load不像普通方法一樣遵守繼承規則,當自己的類沒有實現load方法時,不管超類是否實現,自己都不會載入load方法,...