資源的初始化時機

2021-08-31 08:51:09 字數 966 閱讀 1827

zend framework 中的資源是什麼時候初始化的呢?還是直接上**來看比較有說服力

protected function _bootstrap($resource = null)

foreach ($this->getpluginresourcenames() as $resource)

} elseif (is_string($resource)) elseif (is_array($resource))

} else

}

從上面的**中可以看出,共有4種資源,其中前面載入了兩種資源,一種是「類資源」,另一種是 plugin資源,兩種資源載入後,用

executeresource
進行呼叫。進行資源的初始化

下面再看看executeresource 函式

protected function _executeresource($resource)

if (isset($this->_started[$resourcename]) && $this->_started[$resourcename])

$classresources = $this->getclassresources();

if (array_key_exists($resourcename, $classresources)) = $return;

}return;

}if ($this->haspluginresource($resource)) = $return;

}return;

}}

從上面可以看出,對於「類資源」 ,executeresource呼叫的是其類方法(以_init 打頭的 ),而對於plugin資源,則呼叫其

init() 函式。

所以,如果要在run函式呼叫前初台化資源,只在在這兩個地方放上**即可.

類初始化時機

虛擬機器規範中並沒有強制約束何時進行載入,但是規範嚴格規定了有且只有下列五種情況必須對類進行初始化 載入 驗證 準備都會隨之發生 以上 5 種場景中的行為稱為對乙個類進行主動引用。除此之外,所有引用類的方式都不會觸發初始化,稱為被動引用。被動引用的常見例子包括 system.out.println ...

類的初始化時機

什麼情況下需要開始類載入過程的第乙個階段 載入 虛擬機器規範中並沒強行約束,這點可以交給虛擬機器的的具體實現自由把握,但是對於初始化階段虛擬機器規範是嚴格規定了如下幾種情況,如果類未初始化會對類進行初始化。建立類的例項 訪問類的靜態變數 除常量 被final修辭的靜態變數 原因 常量一種特殊的變數,...

JVM中類的初始化時機

只有對類進行主動引用,才會觸發其初始化方法,而除此之外的引用方式稱之為被動引用,不會觸發其初始化方法 這裡先定義乙個utils 名字隨便起的,不要見怪 作為被測試類 package day12 author weihuanwen date created in 2019 5 23 00 14 des...