ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
# 自动加载类 当使用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是非常舒适和上瘾!