Symfony 1:获取应用配置参数

时间:2018-04-09 09:09:01

标签: php symfony symfony1 symfony-1.4

我正在为应用程序的新应用程序编写测试和任务,我需要访问/apps/mynewapp/config/app.yml中定义的这个新应用程序的“app config parameters”。我认为它会像在Symfony文档中写的一样容易,但似乎我忘了一些东西。

当我收到配置时:$actions = sfConfig::get("app_actions")它是NULL。我认为配置名称是错误的,但是当我获得sfConfig::getAll()的所有配置参数时,我没有我的应用配置参数。

也许我忘了包含我的/apps/mynewapp/config/app.yml

我的文件有内容:

all:
    .array:
        actions:
            bind_destroy: BindDestroyAction
            bind_subscribe: BindSubscriptionAction
        messages:
            bind_destroy: BindDestroyMessage
            bind_subscribe: BindSubscriptionMessage

我尝试访问/apps/mynewapp/lib/GRM/GRMSender.class.php中的参数:

class GRMSender
{
    private $actionClassNames;
    private $messageClassNames;

    public function __construct()
    {
        $this->actionClassNames = sfConfig::get("app_actions");
        $this->messageClassNames = sfConfig::get("app_messages");
    }
}

该类已经自动加载,我可以在单元测试脚本中实例化该类。

感谢您的帮助。

修改

问题在于我的测试(在/test/unit中)和我的任务(在/lib/task中)。我必须使用我在我的应用程序“mynewapp”中所做的。我做了一些事情:

  • 对于任务,我在我的任务选项中定义了应用程序:

    class mynewappActionTask扩展了sfBaseTask {     受保护的函数configure()     {         //做一些配置......

        try {
        $this->addOptions(array(
            new sfCommandOption(
                'application',
                "app",
                sfCommandOption::PARAMETER_REQUIRED,
                'The application name',
                "mynewapp" // There
            ),
        ));
        } catch (sfCommandException $e) {}
    }
    

    }

  • 对于测试,我写了一个加载mynewapp配置的文件。恕我直言,这是一个黑客,有一个更好的方法来做到这一点:

$configMynewapp = ProjectConfiguration::getApplicationConfiguration("mynewapp", sfConfig::get("sf_environment"), true);

必须有更好的方法在任务和测试中获取mynewapp配置参数。在mynewapp文件(控制器,lib等)中没关系。

1 个答案:

答案 0 :(得分:1)

尝试这样做:

/apps/mynewapp/config/app.yml

all:
  actions:
    bind_destroy: BindDestroyAction
    bind_subscribe: BindSubscriptionAction
  messages:
    bind_destroy: BindDestroyMessage
    bind_subscribe: BindSubscriptionMessage

然后你可以得到:

$actions = sfConfig::get('app_actions');

它将返回:

$actions => array(
  'bind_destroy' => 'BindDestroyAction',
  'bind_subscribe' => 'BindSubscriptionAction'
)

无论如何,您可以直接访问其中一个:

$action = sfConfig::get('app_actions_bind_destroy')
$action => 'BindDestroyAction'