我习惯在php脚本中使用include()。我想知道这是一个好方法。我只是使用了很多,因为它使代码看起来更适合未来的编程。
答案 0 :(得分:6)
您可能需要查看autoloading。
,而不是使用包含答案 1 :(得分:5)
利用php自动加载功能
示例:
function __autoload($class_name) {
include $class_name . '.php';
}
每当您实例化一个新类时。 PHP使用一个参数自动调用__autoload函数,即类名。考虑下面的例子
$user = new User():
当您在此处实例化用户对象时,将调用自动加载功能,它会尝试包含来自同一目录的文件。 (参考上述自动加载功能)。现在你可以实现自己的逻辑来自动加载类。无论它驻留在哪个目录中。有关更多信息,请查看此链接http://in.php.net/autoload。
<强>更新强> @RepWhoringPeeHaa,你说的是正确的伙伴。使用spl_autoload然后使用简单的自动加载功能有更多好处。我看到的主要好处是可以使用或注册多个功能。
例如
function autoload_component($class_name)
{
$file = 'component/' . $class_name . '.php';
if (file_exists($file)) {
include_once($file);
}
}
function autoload_sample($class_name)
{
$file = 'sample/' . $class_name . '.php';
if (file_exists($file)) {
include_once($file);
}
}
spl_autoload_register('autoload_component');
spl_autoload_register('autoload_sample');
答案 2 :(得分:5)
如果您正在开发面向对象并且每个类都有一个文件,请考虑实现一个自动加载器函数,该函数在使用类但尚未加载时自动调用include
:
$callback = function($className) {
// Generate the class file name using the directory of this initial file
$fileName = dirname(__FILE__) . '/' . $className . '.php';
if (file_exists($fileName)) {
require_once($fileName);
return;
}
};
spl_autoload_register($callback);