我有一個問題,因爲我需要一個全局靜態變量,我有問題是任何可能將它添加到application.ini文件,如何做到這一點?Zend,Application.ini中的全局變量?
或者我必須:
- 創建靜態變量抽象類,
- 註冊它合適的詞彙有來自所有應用程序訪問該變量(註冊它的引導文件)
- 我可以使用它,還是更容易,我的意思是「自動方式」來做到這一點?
感謝您的建議! Regars,
我有一個問題,因爲我需要一個全局靜態變量,我有問題是任何可能將它添加到application.ini文件,如何做到這一點?Zend,Application.ini中的全局變量?
或者我必須:
感謝您的建議! Regars,
你可以在application.ini和Bootsrap.php中指定值,你讀它並保存在Zend_Registry中。你也可以使用PHP的定義方法來創建常量(如果你的可驗證是恆定的)。
+1。因此繞過了在View中需要Zend靜態類訪問。 – Alex 2012-07-07 13:31:49
對我來說最好的解決方案是在index.php文件中創建一個變量。我添加了: 已定義('VARIABLE_NAME') || define('VARIABLE_NAME','Something here');
現在我可以從任何地方訪問它; D 非常感謝!
中的application.ini文件
someservice.apikey = 12345678
someservice.passkey = 87654321
在引導
public function _initSomeservice()
{
$someservice = $this->getOption('someservice');
Zend_Registry::set('someservice', $someservice);
}
從註冊表
拉$config = Zend_Registry::get('someservice');
我不會使用合適的詞彙,也不常數,有兩個原因
什麼是最好的選擇是直接從引導獲取配置對象。在下面的例子中,我假設你在你的application.ini中有這個:
someservice.apikey = 12345678
someservice.passkey = 87654321
bootstrap被設置爲frontController中的一個參數。如果你有一個動作控制器,這使得它如此簡單:
$serviceOptions = $this->getInvokeArg('bootstrap')->getOption('someservice');
如果你在你的控制器實例化的服務,你現在可以把它們通過構造和/或setter。
如果你想獲得不在你的控制器內的選項,但在別的地方,你可以使用frontController實現的單例模式。因此,在任何地方(當然只是調度,而不是引導過程本身期間),你能做到這一點:
$frontController = Zend_Controller_Front::getInstance();
$serviceOptions = $frontController->getParam('bootstrap')
->getOption('someservice');
通過以上方法你是安全的,你必須總是正確的配置選項,而不是一些可能突變的一個。
這就是我一直在尋找的!謝謝! – VishwaKumar 2012-05-22 06:51:48
我剛剛添加了define('VARIABLE_NAME','Something here');自舉。 即時全局常量。
這些常數放入內受保護的_intiFuncName函數內引導的擴展類
我在的application.ini一系列具有以下命名約定常量:
system.image_path = "/assets/images"
system.custom_path = "/assets/custom"
system.cdn_URL = "http://cdnurl.com"
我只是在我的代碼中引用它們就好像它們是PHP常量一樣:
SYSTEM_IMAGE_PATH
SYSTEM_CUSTOM_PATH
SYSTEM_CDN_URL
配置文件旨在用於指定參數,用作應用程序的輸入lication。你不應該使用PHP全局變量以編程方式添加任何東西 – Phil 2011-02-13 23:49:07