ZendFramework - 我如何声明静态全局常量,以便在我的所有控制器和模型中都可以使用它?

时间:2011-12-21 13:36:18

标签: php zend-framework

我有50个控制器和90个型号。无处不在我正在使用/重复相同的单词'登录'和'成功'。我想创建一个全局常量,以便我可以从我的控制器和模型中的任何位置访问。您如何或在何处声明以下2行。

尝试将其置于某个地方以进行全局访问:

defined('MYFIXED_WORD_SUCCESS')
    || define('MYFIXED_WORD_SUCCESS', "success");
defined('MYFIXED_WORD_LOGIN')
    || define('MYFIXED_WORD_SUCCESS', "login");

重复的例子:

if (count($result) > 0) 
{
  $return = array(
        'flag'  => 'login',  // replace it with MYFIXED_WORD_
        'result'=> 'success',// replace it with MYFIXED_WORD_
        'extra' => array(group'=>$rec->group,));

3 个答案:

答案 0 :(得分:2)

您在应用程序中的任何位置都可以使用bootstrap.php中包含或设置的任何内容。但是看看Zend_Translate,因为它几乎按照你想要的方式进行,但是要有条理。 或者,您可以在application.ini中进行设置,然后通过Zend_Config进行操作。

你“可以”把它放在/public/index.php中,但在我看来它不是放置这种东西的地方。想象一下,当你有数以千计的const时,它会如何对一个基本上永远不会改变的文件进行轮询。

答案 1 :(得分:2)

您可以将变量保存在Zend_Registry

答案 2 :(得分:1)

我在constants.ini文件夹中使用application/configs文件,在Bootstrap.php中,我正在迭代并定义常量:

/**
 * Loads app-wide constants from ini file
 */
protected function _initDefineConstants()
{
    $constantFile = APPLICATION_PATH . '/configs/constants.ini';
    $iniParser = new Zend_Config_Ini($constantFile);

    foreach ($iniParser->toArray() as $constName => $constantVal) {
        define($constName, $constantVal);
    }
}

constants.ini的示例:

ADMIN_PRODUCTS_PER_PAGE = 20
PRODUCT_VIEW_REC = 4 ; number of recommended products in Product view

; columns in "options" table
OPT_COL_VAT = vat
OPT_TEL_ORDER = telephone_order
OPT_QUICK_EMAIL = quick_order_email