Php 别名(使用…作为…)目录中的所有文件

Php 别名(使用…作为…)目录中的所有文件,php,alias,Php,Alias,我目前正在尝试优化我们开发网站的框架,而困扰我的一件事是我们类的别名。现在我们有一个庞大的列表,列出了所有需要的类,我们必须根据需要添加/删除类 我希望它尽可能自动化。我们有四个文件夹,其中包含每个网站上使用的类,因此我尝试了以下方法: $directories = array( '../classes/site/database', '../classes/site/utils', '../classes/creabea/utils', '../class

我目前正在尝试优化我们开发网站的框架,而困扰我的一件事是我们类的别名。现在我们有一个庞大的列表,列出了所有需要的类,我们必须根据需要添加/删除类

我希望它尽可能自动化。我们有四个文件夹,其中包含每个网站上使用的类,因此我尝试了以下方法:

$directories = array(
    '../classes/site/database', 
    '../classes/site/utils', 
    '../classes/creabea/utils', 
    '../classes/creabea/database'
);

foreach($directories as $dir){
    $dir_contents = new DirectoryIterator($dir);
    foreach($dir_contents as $item){
        if(!$item->isDot()){
            if($item->isDir()){
                foreach(new DirectoryIterator($item->getPath().'/'.$item->__toString()) as $file_l2){ 
                    if(!$file_l2->isDot()){
                        $temppath = preg_replace('(\.\./)', '', $file_l2->getPath());
                        $path = preg_replace('/\//g', '\\', $temppath);
                        $classname = preg_replace('\.class\.php', '', $file_l2->__toString());
                        use $path.'\\'.$classname;
                    }
                }
            } else {
                $temppath = preg_replace('(\.\./)', '', $item->getPath());
                $path = preg_replace('/\//g', '\\', $temppath);
                $classname = preg_replace('\.class\.php', '', $item->__toString());
                use $path.'\\'.$classname;
            }
        }
    }
}
最后它不起作用了,因为您不能在函数或循环或类似的东西内部调用
use
use
始终必须在全局范围内

在保持全局范围的同时,是否有其他方法使别名成为自动化过程?

来自

导入是在编译时而不是运行时完成的,因此它不能是块范围的

不能用if块括住use语句,也不能使用任何运行时内容自动导入


一种方法是使用预处理器,自动扫描并添加名称空间中的类。

为什么首先需要导入所有内容及其母亲?只需别名/导入您实际将要使用的名称空间/完全限定名称。因为我们为我们的网站使用了很多类,使它们尽可能动态。网站的每个部分都有一个单独的类,每个数据库表都有自己的类,我们有用来读取和操作URL的类,一个用于SEO的类,等等。但是你从来都不需要将它们全部放在一个文件中,除非你的设计被彻底破坏,以至于你的整个应用程序都在一个文件中运行。在这种情况下,比无法在运行时定义
use
更大的问题。所有这些preg\u replace函数都可以使用str\u replace()实现。当与数组一起提供时,preg_replace和str_replace都可以在一个调用中执行多个操作。两者都会更有效率。使用glob()而不是DirectoryIterator将减少代码量。(还有你降低系统的动态性,通过在全局名称空间中使用别名破坏名称空间的整体原因)@PeeHaa Well。。。嗯。在你们笑之前,我想说清楚,我是在加入这项工作时开始学习PHP的,所以我只知道这些。。。我们确实使用了一个大index.php文件,它根据请求的URL显示不同的页面。这些类是毫无问题地导入的,我们有一个自动加载程序,可以将它们全部导入。我要寻找的是一种为类添加别名的方法。这基本上是一个香槟问题,因为(据我所知)我们唯一的区别是我们可以键入
$content=newcontent()
而不是
$content=new/site/database/content()。无论如何,这些类是通过自动加载程序导入的,这不是问题所在。所谓“导入”,我们指的是注册别名的操作(创建
use
语句)。我指的预处理器是关于添加use语句,而不是包含PHP文件。