我正在CakePHP 2.1中编写一个小应用程序,我想使用Nick Baker的文件上传插件.我下载了cakephp2.0分支(我知道还没有完成),并把它放在我的应用程序插件文件夹中.我在上面做了一些必要的修改,但我很好奇的正确方法是什么,以取代那些App::import函数调用(在开始时FileUploadComponent,FileUploadBehavior和FileUploadHelper类)与App:uses功能.
它需要FileUploadSettings从Config/file_upload_settings.php 导入类,并Uploader从Vendor/upload.php 导入类.它可以通过该require_once函数完成,但我确信有一种CakePHP方法可以做到这一点.
mjs*_*sen 28
从我收集的内容:
import()外部库uses()框架文件例如:
App::import('Vendor', 'ExternalLibrary');
App::uses('Inflector', 'Cake.Utility');
Run Code Online (Sandbox Code Playgroud)
men*_*sch 11
根据Cake手册App::import()的工作方式可比require_once().根据我的理解,您将使用App:uses()和使用供应商文件加载类App:import().
API文档说明了以下主题:
过去使用的所有类
App::import(‘Core’, $class)都需要使用App::uses()引用正确的包来加载.这一变化为框架带来了巨大的性能提升.
- 该方法不再递归地查找类,它严格使用在中定义的路径的值
App::build()- 它将无法加载
App::import('Component', 'Component')使用App::uses('Component', 'Controller');.- 使用
App::import('Lib', 'CoreClass');加载核心类是不再可能.导入不存在的文件,提供错误的类型或包名称或者和参数的null值将导致错误的返回值.$name$fileApp::import('Core', 'CoreClass')不再支持,请App::uses()改为使用类自动加载来完成剩下的工作.- 加载供应商文件在供应商文件夹中看起来不是递归的,它也不会像过去那样将文件转换为下划线.
迁移指南也有一些要说的内容,App:uses()并且通常将2.0的最佳实践与1.3及更低版本的旧方法进行比较是一个很好的起点.
这个相关问题涉及在Cake 2.0中加载供应商文件,我无法验证JoséLorenzo声称App:import()的"愚蠢包装" require_once(),也不能说明它是包含文件的首选方式.我能为后者找到的唯一参考是在Coding Standards for Cake贡献者中,即.开发人员为Cake核心做贡献,而不是构建在框架上的应用程序.
编辑
比方说,你要导入的Twitter的OAuth的库,在居住Vendor/twitter,主要的类文件twitteroauth.php中Vendor/twitter/twitteroauth/twitteroauth.php:
App::import('Vendor', 'twitteroauth', array('file' => 'twitter'.DS.'twitteroauth'.DS.'twitteroauth.php'));
Run Code Online (Sandbox Code Playgroud)