2012-03-29 68 views
0

使用自動加載器在嘗試使用App\Model\Test時加載root/app/model/test.php是否好?通過這種方式,每個班級都應該按照其名稱空間進行組織。Autoloader將名稱空間轉換爲文件夾路徑

這是一個好方法嗎?如果不是,爲什麼?你會建議什麼?

我應該定義一個特定的數組namespace => path,以確保我們不會加載意外的文件嗎?這樣我就必須設置每次像$map['App\Model\Test'] = 'root/app/model/test';這樣的事情,這基本上會刪除自動加載器的所有樂趣。不是嗎?

回答

1
  1. 它是OOP
  2. 使用
  3. 通常自動加載速度更快,當他們有一類映射($map)注入到他們,而「標準」的做法。這是因爲它們不需要通過包含路徑來查找帶有實例化類的文件。爲它們提供一個絕對的文件名,並且將它們從包含路徑中分離出來。提供$map還允許您以另一種方式組織您的課程(而不僅僅是基於文件系統的命名)。除此之外,還有一些類圖生成器可以在你實際實現之前運行,而不必在每次重命名或移動某個類時手動重做。然而,在開發過程中,使用標準的自動加載邏輯(沒有classmaps)會更方便,因爲保持同步文件和其中聲明的類可能非常繁瑣,而且與開發本身無關。

減少樣板代碼的數量不是自動加載器的唯一目的:您加載只有實際需要在你的代碼的類聲明

  • ;不是全部或部分聲明;只有那些使用
  • 它確保您的include_oncerequire_once在對於類發生在自動加載
  • 你的類不注重加載文件;他們專注於他們的功能