0

我有一个文件列表,其中一个文件在同一目录中继承另一个文件。我想包含一个目录的所有文件,如何按继承顺序执行,以免出现任何错误

4

3 回答 3

1

与其自己计算依赖关系,不如使用spl_autoload_register().

这样,您的依赖关系就可以根据需要得到解决。有点像“即时”加载:)

于 2012-06-01T08:47:10.457 回答
0

您可以使用解析器来检查依赖项,但这将是大量工作并且是真正的性能杀手。

您可以对文件进行排序并在它们前面加上数字

001.init.php
002.db_connect.php
003.pre_filters.php

但是,如果您手动对它们进行排序,则依赖文件名是毫无意义的。

如果你有类继承,你可以结合一个自动加载器并要求一次。使用 require_once 注册一个自定义自动加载器以要求文件,并使用循环包含所有文件。如果您需要第 4 个文件中第 8 个文件的类,自动加载器将提前加载第 8 个文件,当您的 inlude 循环到达第 8 个文件时,不会发生任何事情,因为 require_once 不会再次包含该文件。

但是您可能已经意识到:从文件系统中以随机顺序包含相互依赖的文件并不是一个好主意。

于 2012-06-01T08:54:34.833 回答
0

如果您的文件/s 对其他文件有某些依赖关系,请确保首先包含“父”文件/s。

例如,您在文件 A.php 中有一个类 A:

 <?php

    class A {
      // .. statements
    }

你有一个类 B 扩展名为 B.php 的 A:

 <?php

   require_once( "A.php" );
   class B extends A {
     // .. statements
   }

这个想法是在使用该文件中的任何函数/类/语句之前首先“包含”/“要求”所需的文件。在 PHP 5 中,您可以使用自动加载函数“自动”添加/包含您需要的文件,而无需不断键入 require 函数。

于 2012-06-01T08:48:43.220 回答