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...