【问题标题】:Require multiple files需要多个文件
【发布时间】:2023-03-25 09:30:02
【问题描述】:

我正在构建一个 PHP 应用程序,它使用选择菜单来构建电子邮件模板。模板被分成可重复使用的部分(每个部分都是一个单独的 html 文件)。有没有一种简单的方法来使用一个表达式来要求多个文件? (我的 PHP 真的生锈了……)

基本上我想做这样的事情:

function require_multi() {
    require_once($File1);
    require_once($File2);
    require_once($File3);
    require_once($File4);
}

【问题讨论】:

    标签: php include require


    【解决方案1】:

    编辑:

    因为你想要求或包含多个文件,你可以使用这个递归 将文件包含在指定文件夹中的算法。该文件夹是启动的根目录 迭代器。因为算法是递归的,所以会自动遍历所有 后续文件夹并包含这些文件。

    public function include_all_files($root) {
        $d = new RecursiveDirectoryIterator($root);
        foreach (new RecursiveIteratorIterator($d) as $file => $f) {
            $ext = pathinfo($f, PATHINFO_EXTENSION);
            if ($ext == 'php' || $ext == 'inc')
                include_once ($file); // or require(), require_once(), include_once()
        }
    }
    
    include_all_files('./lib');
    

    【讨论】:

    • 这个解决方案只有在他想加载类的时候才有用。因此,他重用的那些实用程序函数可能不在类中。所以,我猜这不是一个好的答案,因为它的问题。尽管如此,自动加载类还是很有趣的。
    • $d = new RecursiveDirectoryIterator($fullPath, FilesystemIterator::SKIP_DOTS); 用于跳过点
    【解决方案2】:

    贷记Tom Haigh 来自how to require all files in a folder?

    $files = glob( $dir . '/*.php' );
    foreach ( $files as $file )
        require( $file );
    

    将所有需要的文件存储在$dir 中,剩下的工作由上面的代码完成。

    【讨论】:

    • 它可能对调试非常有用。我现在处于需要加载 ./css 中的所有 css 文件的情况,所以它可以正常工作。 (用于调试,而非生产)
    • 这只有在文件的顺序正确且不依赖后续文件的情况下才能正常工作。如果你给文件编号,这会很好。
    【解决方案3】:

    嗯,你可以把它变成一个函数:

    function require_multi($files) {
        $files = func_get_args();
        foreach($files as $file)
            require_once($file);
    }
    

    这样使用:

    require_multi("one.php", "two.php", ..);
    

    但是,如果您要包含类,更好的解决方案是使用autoloading

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多