在CakePHP 2.1插件中使用App::uses(而不是App::import)
我正在用CakePHP2.1编写一个小应用程序,我想使用Nick Baker的文件上传插件。我下载了cakephp2.0分支(我知道还没有完成),并将其放在我的应用程序插件文件夹中。我对它做了一些必要的修改,但我很好奇,用在CakePHP 2.1插件中使用App::uses(而不是App::import),cakephp,plugins,Cakephp,Plugins,我正在用CakePHP2.1编写一个小应用程序,我想使用Nick Baker的文件上传插件。我下载了cakephp2.0分支(我知道还没有完成),并将其放在我的应用程序插件文件夹中。我对它做了一些必要的修改,但我很好奇,用App:uses函数替换那些App::import函数调用(在FileUploadComponent开始时,FileUploadBehavior和FileUploadHelper类)的正确方法是什么 它需要从Config/file\u upload\u settings.php
App:uses
函数替换那些App::import
函数调用(在FileUploadComponent
开始时,FileUploadBehavior
和FileUploadHelper
类)的正确方法是什么
它需要从Config/file\u upload\u settings.php导入
FileUploadSettings
类,从Vendor/upload.php导入Uploader
类。它可以通过require\u once
函数来完成,但我确信有一种CakePHP方法可以做到。根据Cake手册App::import()
与require\u once()
的工作方式相当。据我所知,您将使用App:uses()
加载类,并使用App:import()
加载供应商文件
API文档说明了该主题:
过去使用App::import('Core',$class)
加载的所有类都需要使用引用正确包的App::uses()
加载。这一变化为框架带来了巨大的性能提升
- 该方法不再递归地查找类,而是严格使用
App::build()中定义的路径值
- 它将无法加载
useApp::import('Component','Component')
App::uses('Component','Controller')代码>
- 使用App::import('Lib','CoreClass')代码>无法再加载核心类。导入不存在的文件、为
和$name
参数提供错误的类型或包名称或$file
值将导致错误的返回值null
不再受支持,请改用App::import('Core','CoreClass')
并让类自动加载完成其余操作App::uses()
- 加载供应商文件不会在供应商文件夹中递归查看,也不会像过去那样将文件转换为下划线
App:uses()
的内容,这通常是比较2.0的最佳实践与1.3及更低版本的旧方法的一个很好的起点
关于在Cake 2.0中加载供应商文件,我无法验证JoséLorenzo关于App:import()
是require_once()
的“愚蠢包装器”的说法,也无法验证它是包含文件的首选方式的说法。我能找到的关于后者的唯一参考资料是《蛋糕贡献者》,即。为核心蛋糕做出贡献的开发人员,而不是基于框架构建的应用程序
编辑
假设您要导入位于Vendor/twitter
中的,主类文件是Vendor/twitteroauth/twitteroauth.php
中的twitteroauth.php
:
App::import('Vendor', 'twitteroauth', array('file' => 'twitter'.DS.'twitteroauth'.DS.'twitteroauth.php'));
从我收集的信息来看:
- 对外部库使用
import()
- 而
对框架文件使用()
App::import('Vendor', 'ExternalLibrary');
App::uses('Inflector', 'Cake.Utility');
简单。直截了当的对的非常感谢。