在php中的另一个类中包含一个类

时间:2012-02-24 16:35:01

标签: php class include

我有一个“搜索”类,仅在某些情况下使用。是否需要“搜索”的决定是在“setupPage”函数的“页面”类中进行的。是否可以(是不是很好的编码),在另一个类中包含一个类?

class Page {
    private function setupPage($page_id){
        switch($page_id){
            case 1:
            // do something
            break;

            case 2:
            include_once('class_search.php');
            // class search is singleton
            $this->search = Search::getInstance();
            // now I can use functions of 'search'
            $this->search->someSearchFunction();
        }
    }
}

3 个答案:

答案 0 :(得分:2)

我不会这样做。如果你只想加载你的类,如果需要它们,我建议你使用PHP的自动加载。 Here is the Documentation.

答案 1 :(得分:2)

这样做绝对没问题,但你也有其他选择。你可能想看看php的自动加载功能

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

每当您实例化一个新类时。 PHP使用一个参数自动调用__autoload函数,即类名。考虑下面的例子

$user = new User():

当您在此处实例化用户对象时,将调用自动加载功能,它会尝试包含来自同一目录的文件。 (参考上述自动加载功能)。现在你可以实现自己的逻辑来自动加载类。无论它驻留在哪个目录中。有关更多信息,请查看此链接http://in.php.net/autoload

答案 2 :(得分:0)

这不应该是一个问题,如果你使用autoloading,这件事情就会发生。