【问题标题】:Best way to set a common variable between projects in PHP?在 PHP 中的项目之间设置公共变量的最佳方法?
【发布时间】:2018-03-13 07:55:04
【问题描述】:

我的主机上有几个项目。它们有很多相似之处,我希望它们使用通用的 node_modules。我的文件夹结构如下所示:

_CONFIG.php
node_modules/
project1/
    index.php
project2/
    index.php
project3/
    index.php

在我所有的 index.php 文件中,我 require_once '../_CONFIG.php' 我设置的位置:

$node_modules = '../node_modules/';

然后在每个项目中,当我需要使用一个Node模块时,我有:

<script src="<?= $node_modules; ?>jquery/dist/jquery.min.js"></script>

我这样做是因为我可能需要更改 node_modules 的路径。如果一切都是硬编码的,我会很艰难。假设我安装了升级的 node_modules 并且我想要备份。我希望能够在新旧模块之间快速切换,以防某些新模块与我的某个项目不兼容。

我希望通过 _CONFIG.php 文件轻松配置项目之间的其他共同点。

问题

我知道污染全局范围并不是一件好事,而这正是我正在做的事情。有一个更好的方法吗?同时,我不想为了在脚本标签的src 属性中输出一个字符串而做很多事情。

【问题讨论】:

    标签: php organization code-organization project-organization


    【解决方案1】:

    定义常量呢?它对于定义全局选项非常有用,而且您根本不会污染全局范围。

    define('NODE_MODULES_DIR', '../node_modules/');
    

    然后在那里使用它:

    <script src="<?= NODE_MODULES_DIR ?>jquery/dist/jquery.min.js"></script>
    

    我不知道“更好”的解决方案。

    【讨论】:

      【解决方案2】:

      将配置保留在代码之外是可行的方法。按照The Twelve-Factor App 的建议,您将所有连接字符串、密码等放入配置文件中。

      您可以使用基于给定键字符串返回值的包装函数添加一层间接性,而不是使用全局变量。

      phpdotenv 很好地提供了这些功能。

      【讨论】:

        猜你喜欢
        • 2015-05-29
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 2022-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多