我正在为应用程序的新应用程序编写测试和任务,我需要访问/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等)中没关系。
答案 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'