【发布时间】:2012-12-09 00:23:17
【问题描述】:
我有一些类和一个functions.php 文件,需要在我编写的每个PHP 页面上加载该文件。 (因为某些页面可能会被 $.ajax 单独调用)
我用谷歌搜索过,但没有比 __autoload 函数更进一步。
假设我有 100 个页面,在 3 个其他目录中有 10 个函数文件和 10 个类文件。将它们加载到每个页面并从每个页面获取良好的相对路径会有点困难,这是不可能的。
因此,完美的情况是在 index.php 上调用每个类/函数文件一次,而不必再次调用它们。这可能吗?
您将如何调用所有类和函数文件以在您的网站中使用?
谢谢!
【问题讨论】:
-
要么使用自动加载器,要么只是制作一个“元”包含...包含的文件本身可以包含其他文件,所以只需一个包含所有其他文件的
inc.php。您最终仍会包含 10+10 个文件,但实际代码中只有一个 include()。 -
Psst,现代 PHP 自动加载使用
spl_autoload_register和朋友进行。你可以用它来创建多个自动加载器处理程序,而只能有一个普通的香草__autoload -
@AngeloA,文档很清楚,并且有示例。如果你不明白,那么具体问什么问题。基本上,您编写一个函数,如果 PHP 找不到类,它会调用该函数,该函数会计算出要包含的文件以使该类可用。是的,PHP 不知道也不关心请求是通过 AJAX 发出的。它仍然是普通的 HTTP。
-
自动加载器应该在您在每个页面上运行的代码中,通常在“init”或“bootstrap”文件中。方便的是,这也是您应该放置所有正常包含的地方。
-
@AngeloA,除了方便之外,自动加载器还有其他好处。这也意味着你只会包含你需要的东西。如果特定的代码路径不需要某些东西,则不会包含它。在繁重的网站上,这是一个很大的好处。对于较小的网站,这可能并不重要。