# 自動加載類
當使用Nette Framework時,忘記包含使用require或include的每個文件。 Nette關心你的舒適,它本身。
擺脫所有要求
只加載必要的腳本
不需要嚴格的文件命名約定
允許在單個文件中有更多的類
我們可以用一個命令加載Nette框架:require'Nette / loader.php'(路徑可能不同)當它第一次使用它的所有類將被自動加載。 這不僅為您節省了大量的寫作,而且還加速了整個應用程序。 為什么? 只是因為只加載實際需要的那些文件。 沒有不必要的文件由PHP解析。
**Nette\Loaders\RobotLoader**
Nette \ Loaders \ RobotLoader是一個工具,讓您舒適的自動化類加載為您的整個應用程序,包括第三方庫。 所以我們可以忘記那些著名的代碼塊:
~~~
require_once 'Zend/Pdf/Page.php';
require_once 'Zend/Pdf/Style.php';
require_once 'Zend/Pdf/Color/GrayScale.php';
require_once 'Zend/Pdf/Color/Cmyk.php';
...
~~~
像Google機器人抓取和索引網站一樣,RobotLoader抓取所有PHP腳本并記錄在其中找到的類和接口。 這些記錄然后保存在緩存中,并在所有后續請求期間使用。 你只需要指定要索引的目錄和保存緩存的位置:
~~~
$loader = new Nette\Loaders\RobotLoader;
// Add directories for RobotLoader to index
$loader->addDirectory('app');
$loader->addDirectory('libs');
// And set caching to the 'temp' directory on the disc
$loader->setCacheStorage(new Nette\Caching\Storages\FileStorage('temp'));
$loader->register(); // Run the RobotLoader
~~~
就這樣。 從現在開始,您不需要使用require。 太好了,不是嗎?
當RobotLoader在索引期間遇到重復的類名時,它會拋出異常并通知您。
在沙箱中,應用程序和庫文件的路徑在APP_DIR和LIBS_DIR常量中定義,可以在bootstrap.php中使用以下內容:
~~~
$configurator = new Nette\Configurator;
// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
~~~
變量$ loader-> autoBuild確定RobotLoader是否應該重新索引腳本,如果要求不存在類。 缺省情況下,生產服務器上禁用此功能。
因此,在上傳新版本的應用程序時,需要刪除緩存。
如果你想讓RobotLoader跳過一些目錄,創建一個名為netterobots.txt的文件:
~~~
Disallow: /Zend
~~~
從這一點開始,Zend目錄將不會被索引。
RobotLoader是非常舒適和上癮!
- Nette簡介
- 快速開始
- 入門
- 主頁
- 顯示文章詳細頁
- 文章評論
- 創建和編輯帖子
- 權限驗證
- 程序員指南
- MVC應用程序和控制器
- URL路由
- Tracy - PHP調試器
- 調試器擴展
- 增強PHP語言
- HTTP請求和響應
- 數據庫
- 數據庫:ActiveRow
- 數據庫和表
- Sessions
- 用戶授權和權限
- 配置
- 依賴注入
- 獲取依賴關系
- DI容器擴展
- 組件
- 字符串處理
- 數組處理
- HTML元素
- 使用URL
- 表單
- 驗證器
- 模板
- AJAX & Snippets
- 發送電子郵件
- 圖像操作
- 緩存
- 本土化
- Nette Tester - 單元測試
- 與Travis CI的持續集成
- 分頁
- 自動加載
- 文件搜索:Finder
- 原子操作