我是网络编程新手。我在桌面上的c#.net平台上表现很好。我试图理解php和php框架,但我有点困惑。据我所知,php文件可以将文件中的类导入到另一个带有require_once函数的php文件中。但框架并没有使用require_once函数导入自己的类。我认为他们做了一些我不理解的事情。有人可以向我解释一下吗?
答案 0 :(得分:2)
大多数框架使用称为“自动加载”的技术来自动解析并包含所需的依赖项。
“Autoloader”只是一个在引用未知类时由PHP调用的函数。 “Autoloader”可以在程序上创建类,或者只根据文件名从外部文件include
创建它。
当前(PHP 5.1.2及更高版本)这样做的正确方法是使用spl_autoload_register()
。以下是自动加载器的示例:
function autoload_example($className) {
$normalizedName = strtolower($className);
if(file_exists('includes/' . $normalizedName . '.inc')) {
require_once('includes/' . $normalizedName . '.inc');
} elseif(file_exists('includes/' . $normalizedName . '.inc')) {
require_once('includes/' . $normalizedName . '.php');
} else {
die('Class ' . $className . ' not found');
}
}
spl_autoload_register('autoload_example');
$myAwesomeObject = new Awesome();
在上面的示例中,当PHP点击类autoload_example
的引用时,PHP将运行“Autoloader”Awesome
。
“Autoloader”将首先尝试查找文件include/awesome.inc
。如果它能找到它,它将包括它。
如果没有,它将查找名为include/awesome.php
的文件。如果它能找到它,它将包括它。
如果没有,它会die()
声明找不到我的Awesome
课程。