目标:我想知道是否可以在 Zend 框架中的一个位置确定主机是 localhost 还是我的开发站点的主机,并通过会话变量在站点的其余部分使用该确定。
详细信息:我正在与一小群人一起开发一个网站。我们使用 svn 工具来合并我们的代码,并在将更改和添加移动到开发服务器之前在 localhost 上进行测试。由于我们gethostname()
在 php 中使用的每个平台都使用相同的代码来确定我们是通过 localhost 还是服务器访问我们的站点。我们需要这个,以便我们可以适当地设置文件路径(http://localhost/images/dog.jpg
vs https://mysite.com/images/dog.jpg
)。最初,每次这发挥作用时,我们都会在控制器中设置一个变量 $host,public function init()
其中包含要在整个页面中使用的适当字符串。然后我们切换到将 $host 放入会话变量中,这显着减少了冗余代码的数量。但我确信有一种方法可以将它设置在一个地方并完成它,但我不知道这个地方会在哪里(在 Zend 框架内)。索引登录页面不起作用,因为用户可能会从其他地方进入。我最好的猜测是在布局中设置它,但这给了我错误,因为布局代码在页面加载过程中运行得太晚了。有没有更好的地方来确定主机?有没有办法在布局代码中对其进行优先级排序,以便在页面需要它之前以某种方式执行?
代码:
if(!isset($_SESSION['hostname'])){
$hostname = gethostname();
if ($hostname == 'prodserver') {
$_SESSION['hostname'] = 'https://mysite.com';
} else {
$_SESSION['hostname'] = 'http://localhost';
}
}
我们目前的方法工作得很好,但我无法摆脱一定有更好的方法的感觉!如果你知道 - 我很想听听。谢谢!