2012-02-24 42 views
3

我有一个只在某些情况下使用的类“搜索”。 “搜索”是否需要的决定是在功能“setupPage”的类“页面”中进行的。是否可以(是否好编码),将课程包含在另一课程中?在php的另一个类中包含一个类

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

回答

2

这样做绝对不错,但你也有其他选择。你可能想看看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.

+1

尽管手动加载类没有什么问题,但我同意自动加载是一种方法。它本质上是一样的,它看起来更好,因为包含是隐含的。它还为您提供更一致的加载,因为如果发生路径更改,对函数的更改会比改变include()的所有实例更简单。 – Crashspeeder 2012-02-24 16:40:25

0

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

相关问题