在php中使用太多include()

时间:2012-04-24 15:36:28

标签: php include

我习惯在php脚本中使用include()。我想知道这是一个好方法。我只是使用了很多,因为它使代码看起来更适合未来的编程。

3 个答案:

答案 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);