PHP - 避免每个页面的所有包含?

时间:2011-04-02 07:02:23

标签: php

我有一个我正在编写的用户身份验证系统。问题是,我不想为我想要使用该类的每个页面包含类x,y,z等。例如,这是索引页面:

///////// I would like to not have to include all these files everytime////////

include_once '../privateFiles/includes/config/config.php';

include_once CLASSES.'\GeneratePage.php';

include_once DB.'\Db.php';

include_once HELPERS.'\HelperLibraryUser.php'; //calls on user class
//////////////////////////////////////////////////////////////////////////////

$html = new GeneratePage();
$helper = new HelperLibraryUser("username","password","email");

$html->addHeader('Home Page','');

$html->addBody('homePage',
'<p>This is the main body of the page</p>'.
$helper->getUserEmail().'<br/>'.
$helper->doesUserExists());

$html->addFooter("Copyright goes here");

echo $html->getPage();

正如您所看到的,我需要在每个页面上包含一些文件,而且我添加的类越多,我必须包含的文件就越多。我该如何避免这种情况?

3 个答案:

答案 0 :(得分:3)

您可以定义自动加载功能,例如:

function __autoload($f) { require_once "/pathtoclassdirectory/$f.php"; }

这样,当php遇到对它不知道的类的引用时,它会自动查找与该类同名的文件并加载它。

如果你需要在不同的目录中放置不同的类,你可以在这里添加一些逻辑......

答案 1 :(得分:2)

创建一个名为common.php的文件,并将这些include语句以及此文件中每个文件中所需的任何其他函数/代码(例如数据库连接代码等)放入其中。然后在每个文件的顶部简单地执行此操作:

<? 
require_once('common.php');

这将包括您的所有文件,而无需单独包含它们。

答案 2 :(得分:0)

强烈建议不要再使用__autoload()函数,因为此功能自PHP 7.2.0起已被弃用。强烈建议不要使用此功能。现在,您应该考虑使用spl_autoload_register()函数。

    <?php
    function my_autoloader($class) {
        include 'classes/' . $class . '.class.php';
    }
    spl_autoload_register('my_autoloader');
    
    // Or, using an anonymous function as of PHP 5.3.0
    spl_autoload_register(function ($class) {
        include 'classes/' . $class . '.class.php';
    });
    ?>