2012-02-24 93 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這種事情會發生。

相關問題