在PHP中过多使用include()函数

7

我有一个在php脚本中经常使用include()的习惯。我想知道这是不是一个好的方法。我经常使用include,因为它可以让代码看起来更好,以便进行面向未来的编程。

3个回答

6

如果您不想使用include函数,可以考虑使用自动加载


5

利用PHP自动加载函数

示例:

function __autoload($class_name) {
    include $class_name . '.php';
}

每当您实例化一个新类时,PHP会自动调用__autoload函数并传递一个参数,即类名。请考虑下面的示例。
$user = new User():

当您在此处实例化用户对象时,autoload函数被调用,它尝试从相同目录中包含文件(参考上面的autoload函数)。现在,您可以实现自己的逻辑来自动加载类,无论它位于哪个目录中。欲了解更多信息,请查看此链接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');

@yusufiqbalpk,如果你想学习更多的内容,我建议你从学习PHP中的面向对象编程概念开始。这里是一个链接,可以帮助你入门:http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/ - Ibrahim Azhar Armar
1
所有的回答都很好,但我选择你是因为你提供了教程链接。最棒的人。 - yusufiqbalpk
1
@yusufiqbalpk你可能想考虑使用上面的spl_autoload之外的“新”方式。 - PeeHaa

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

我从未使用过它。因此,我必须先学习。那么我可以在哪里学习呢?一个链接可能会有帮助。提前致谢。 - yusufiqbalpk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接