【问题标题】:Including a class within another class in php在 php 中的另一个类中包含一个类
【发布时间】:2012-02-24 16:35:00
【问题描述】:

我有一个“搜索”类,它只在特定情况下使用。在函数“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();
        }
    }
}

【问题讨论】:

    标签: php class include


    【解决方案1】:

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

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

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

    $user = new User():

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 虽然手动加载类没有什么问题,但我同意自动加载将是可行的方法。它本质上是一样的,只是看起来更好,因为包含是隐含的。它还为您提供更一致的加载,因为更改函数比更改所有 include() 实例更简单,如果发生路径更改。
      【解决方案3】:

      这应该不是问题,如果您使用autoloading,就会发生这种情况。

      【讨论】:

        猜你喜欢
        • 2020-12-03
        • 2011-03-04
        • 1970-01-01
        • 2012-03-22
        • 2017-01-04
        • 2016-09-30
        • 2020-02-06
        • 2012-02-15
        • 1970-01-01
        相关资源
        最近更新 更多