[英]how to set time format in symfony ProjectConfiguration.class.php?
[英]How can I refer to different environment's inside Symfony's ProjectConfiguration.class.php
我在同一台计算机上有一个暂存和开发环境。 我想根据我的环境在ProjectConfiguration.class.php中配置一个不同的memcached端口。 我想在ProjectConfiguration文件中使用$ SERVER ['HTTP_HOST']是不安全的,因为这不能说明从命令行运行的任务。
什么是完成这段代码打算的最佳方法:
public function configureDoctrine(Doctrine_Manager $manager) {
if ($_SERVER['HTTP_HOST'] == 'dev.example.com') {
$memcached_port = 11211;
} else {
$memcached_port = 11212;
}
$servers = array(
'host' => '127.0.0.1',
'port' => $memcached_port,
'persistent' => true);
}
有两种方法可以实现此目的。
首先,您应该在index.php中单独设置环境。 通常,我们将其设置为prod,然后检入文件,然后在我们的开发服务器和本地计算机上手动将其更改为dev,以简化部署。 我还建议将此文件放在.gitignore中,以免被意外更改。
使用app.yml配置文件。 在您的app.yml配置中,设置一个名为“ memcache_port”的键,并分别为每个环境设置值。 yaml文件如下所示:
prod: memcached_port: 11211 dev: memcached_port: 11212
然后要在代码中访问此值,您会说:
$memcached_port = sfConfig::get('app_memcached_port');
通过symfony上下文手动获取环境名称
$env = sfContext::getInstance()->getConfiguration()->getEnvironment(); if($env == 'dev') { $memcached_port = 11211; } else if($env == 'prod') { $memcached_port = 11212; }
我个人更喜欢选项1,但是完全由您决定如何处理。
注意:当我指的是环境时,我指的是index.php文件中定义的symfony环境。
希望这可以帮助。
我在Web控制器中使用http主机来检测环境并将其传递到项目配置实例,如下所示:
<?php
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
$env = ProjectConfiguration::getEnvironment();
if (!in_array($env, array('dev'))) throw new Exception('Not Allowed');
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', $env, true);
sfContext::createInstance($configuration)->dispatch();
这是来自frontend_dev.php的-因此它还确保您只能在dev之外的任何地方访问dev控制器。
我的项目配置类包含引用的方法,该方法可以完成工作:
public function getEnvironment() {
if ($_SERVER ['HTTP_HOST'] == 'dev.example.com') {
return 'dev';
} else {
return 'prod';
}
}
就像您正确说的那样,还有一些命令行任务需要考虑-但是几乎所有的symfony任务都将带有--env = xxx参数。 我用那些。 无论如何,他们都默认使用dev,这是我完成大部分工作的地方,因此听起来并不那么繁琐。
然后,在您的if语句中使用if (sfConfig::get('sf_environment') == 'dev')
,而不是直接使用HTTP_HOST,它将在cmd行和Web上正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.