在PHP脚本中包含多个目录

时间:2009-07-28 09:44:11

标签: php

如何在调用PHP脚本时包含多个路径?

例如,我需要将include_path指向多个目录;在包含子目录等的每个目录中。但是我想在子目录中包含所有php文件,这样当我的主PHP脚本可以调用目录中定义的任何方法和对象时。

有什么想法吗?

如果可能的话,我想调用一个函数来执行它,而不是指定根目录并遍历目录中的所有内容。

3 个答案:

答案 0 :(得分:2)

你可能最好使用spl_autoload_register()来注册一个回调函数,当PHP找不到你想要访问的类时,它会调用这个回调函数。然后,您可以编写一个函数,以根据名称包含正确的文件。像PEAR这样的库倾向于通过下划线分割类名,每个部分对应于其路径中的目录。

我不认为有任何方法可以让PHP(包含文件时)以递归方式搜索包含路径,直到找到文件为止(除非你自己编写这个逻辑 - 我想你可以编写包装需求(),include()等,然后调用它们,但我不会。)

您还可以递归扫描目录,并在脚本启动时将每个目录添加到包含路径,但我认为这会使后续文件包含得更慢。

答案 1 :(得分:2)

听起来您想要指定include_path中的每个目录以允许您执行

require_once("x.php"); // this is in ./foo/bar
require_once("y.php"); // this is in /docs/utils/
require_once("z.php"); // this is in /some/other/include/path

在这种情况下,不要。这个想法充满了失败,对文档,调试和理智都不利。

如果必须,你必须编写一个函数来手动递归抓取你的include目录,作为bootstrap过程的一部分,或者手工完成。

无论哪种方式,这听起来都是一个坏主意,并不是一个有原因的功能。

答案 2 :(得分:0)

你需要用分号

分隔多个目录