0

目标:我想知道是否可以在 Zend 框架中的一个位置确定主机是 localhost 还是我的开发站点的主机,并通过会话变量在站点的其余部分使用该确定。

详细信息:我正在与一小群人一起开发一个网站。我们使用 svn 工具来合并我们的代码,并在将更改和添加移动到开发服务器之前在 localhost 上进行测试。由于我们gethostname()在 php 中使用的每个平台都使用相同的代码来确定我们是通过 localhost 还是服务器访问我们的站点。我们需要这个,以便我们可以适当地设置文件路径(http://localhost/images/dog.jpgvs 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'; 
  }
}

我们目前的方法工作得很好,但我无法摆脱一定有更好的方法的感觉!如果你知道 - 我很想听听。谢谢!

4

1 回答 1

2

要回答您评论中的问题,不,会话变量根据定义是用户特定的。然而 ZF(按照惯例)设置了APPLICATION_ENV可用于执行特定环境检查的常量。您还可以通过设置变量(包括 baseUrl)。application.ini 如果需要,您将如何解决问题中的问题。

于 2013-03-04T19:00:41.537 回答