未知项目级别的AutoLoader

时间:2017-01-20 11:17:37

标签: php autoloader

我想让我的项目如此灵活,以至于可以简单地将它们复制+粘贴到彼此中。

我的项目结构是ProjectName /(bin,config,lib)。

复制+粘贴后,我会有一个像ProjectName1 / lib / ProjectName2 / lib / ProjectName3 /的链。

现在,如果Autoloader根据调用文件的级别搜索文件,那就太棒了。

例如,如果ProjectName1 / lib / ProjectName2 / lib /中的类调用“new Config”,它应该接收位于ProjectName1 / lib / ProjectName2 / config / config.php中的配置文件。

(但不是ProjectName1 / config / config.php中的那个,也不是ProjectName1 / lib / ProjectName2 / lib / ProjectName3 / config / config.php中的on。)

有办法做到这一点吗?

编辑: 使文件独一无二有意义吗?例如:如果'config.php'是'ProjectName2Config.php',则(几乎)没有冲突的可能性。因此,自动加载器可以在任何地方搜索并最终找到它的文件。

编辑: 每个项目都有自己的自动加载器可用于复制+粘贴的原因。但是我认为我只会为ProjectName1加载一个。加载它们是否更好,以便每个人都可以保持简单?

干杯, 彼得

PS:我刚从3年的编程休息回来。我也很高兴,如果你告诉我上面通常是一个坏主意,并告诉我原因: - )

1 个答案:

答案 0 :(得分:0)

我认为这是一种管理项目的奇怪方式。 Project1的主脚本和Project2的主脚本在哪里?

例如,我所做的是在index.php或main project / lib include文件中写这个:

<?php define('ROOT_PATH', dirname(__FILE__) . '/'); ?>

我总是使用这个ROOT_PATH作为包含路径的开头。

在你的情况下,Project1 ROOT_PATH就像&#34; / var / www / Project1 /&#34;和Project2 ROOT_PATH将是&#34; / var / www / Project1 / lib / Project2 /&#34;

因此,Project1和Project2中的新配置将使用自己的config.php文件。