【问题标题】:Shorthand PHP Environment Variables速记 PHP 环境变量
【发布时间】:2015-09-07 11:52:10
【问题描述】:

我希望在无需更改 PHP 文件的情况下从 Localhost 过渡到 Dev 到 East/West 登台环境再到生产环境,但我认为我的代码不正确,它可能是我的速记,我是新手到这个。

我希望做的是说,如果是本地主机,那么如果是开发,则如果在东部分期,如果在西部分期,如果是生产。也许有更好的方法来做到这一点?

如果有帮助,我使用 Apache 作为我的本地主机,在开发/暂存/生产中使用 Azure,我会使用两者,但我无权访问 Azure。

<?php
$thisPage = "navigation";
define('URL_ROOT',
            getenv('DEV_SERVER') ?
                'http://localhost/Site/' :
                'dev.website.net' :
                'http://website-east.website.net/' :
                'http://website-west.website.net/' :
                'http://production-website.com/'
);
?>

【问题讨论】:

  • 希望我的编辑能让其他人更容易阅读您的代码。
  • 您希望从getenv('DEV_SERVER') 为 5 台服务器中的每台服务器获得什么输出?
  • @AbraCadaver 你是对的,OP 使用三元运算符的参数太多。我认为他们会从switch(){} 声明中受益,否则事情会变得丑陋。
  • @MonkeyZeus 感谢您编辑它,它现在更具可读性。我在 Apache 中为我的本地主机定义了 DEV_SERVER。我的想法是,如果它在 Azure 上并且找不到我的本地主机,它将转到 dev.website.net 版本,如果找不到,则转到 website-east 等等。 . 我想弄清楚我是否可以推送到多个环境,而不必总是为每个新环境编辑 PHP 文件。我不确定如何使用 switch(){},但我会研究它。谢谢
  • @user2966325 a switch 可能是最干净的解决方案,它将帮助您弄清楚在每种情况下应该做什么。我会用它的用法发布答案:-)

标签: php azure if-statement environment shorthand


【解决方案1】:

根据我们上面的 cmets,你去吧:

switch(strtolower(getenv('DEV_SERVER')))
{
    case 'localhost':
        define('URL_ROOT', 'http://localhost/Site/');
        break;
    case 'dev':
        define('URL_ROOT', 'dev.website.net');
        break;
    case 'east':
        define('URL_ROOT', 'http://website-east.website.net/');
        break;
    case 'west':
        define('URL_ROOT', 'http://website-west.website.net/');
        break;
    case 'prod':
        define('URL_ROOT', 'http://production-website.com/');
        break;
    default:
        die('Environment not defined!!');
}

如果可以的话,我建议设置一个通用环境变量名称,例如 getenv('SERVER_ENVIRONMENT') 并在您的 switch() 中使用它,因为 DEV_SERVER 意味着它只是 T/F 并且除 dev 之外的每个服务器都将设置为 F .

【讨论】:

  • 谢谢!我将设置一个通用环境变量,所以它不仅仅是 T/F。
猜你喜欢
  • 2020-12-07
  • 1970-01-01
  • 2012-05-09
  • 2013-03-03
  • 2011-02-25
  • 1970-01-01
  • 2023-03-24
  • 2012-10-29
  • 2015-02-06
相关资源
最近更新 更多