如何在不包含包含的情况下调用其他文件中的函数?

Posted

技术标签:

【中文标题】如何在不包含包含的情况下调用其他文件中的函数?【英文标题】:How to call functions in other files without including them with include? 【发布时间】:2012-09-19 13:01:10 【问题描述】:

不使用 include_once 或任何 include/require 如何引用当前目录中其他 php 文件中声明的函数?就像我们使用 fopen 一样。

包含包含不在函数中的代码的 php 文件的内容可能会造成混乱。如果函数使用自动链接到它的定义会更好。

我还检查了How to include() all PHP files from a directory?,这需要一些代码来完成。

我无法在互联网上的任何地方找到这个问题的答案可能是因为这个问题的搜索词太常见了。

【问题讨论】:

【参考方案1】:

最合乎逻辑的方法是使用 OOP 和 autoloading。

这样你只会加载你实际使用的类。

否则,您链接到的问题中接受的答案就是要走的路。

【讨论】:

哦,它只会加载类而不是函数。 @user774250 不,它适用于类及其所有属性和方法。【参考方案2】:

您可以使用 glob 遍历目录,然后包含它们:

$phpfiles = glob('mydir/*.php');
foreach($phpfiles as $file)
  do_something_with_the_file($file) // why not include_once $file ?

当您在其他文件中引用函数时,您不能使用自动加载器,因为自动加载器在类上运行。自动加载类将是一个更好的解决方案。

【讨论】:

【参考方案3】:

如果您热衷于使用类和 OO vs Procedural,这将包含一个与被调用的类同名的文件,并且不会在目录中包含不需要的类文件。

从站点/应用程序的根目录调用。

define( "APP_PATH", dirname( __FILE__ ) ."/" );

function my_autoloader($class)

    include 'core/classes/' . $class . '.class.php';

spl_autoload_register('my_autoloader');

假设您将所有类都保存在类似的目录结构中:

站点/核心/类

你明白了。

【讨论】:

以上是关于如何在不包含包含的情况下调用其他文件中的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不增加 http 请求的情况下包含多个外部 javascript 文件

如何在不使用 Bootstrap CSS 的情况下包含 Glyphicons

如何在不包含新列名和类型的情况下更改现有 Hive 表中的列注释?

如何在不插入的情况下检查 std::map 是不是包含键?

如何在不扩展包含的头文件的情况下预编译 C 源文件?

如何在不耗尽内存的情况下部署包含 130,000 多个条目的脚本