# 自动加载类
当使用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
- 原子操作