在CakePHP 2.1插件中使用App::uses(而不是App::import)

在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

我正在用CakePHP2.1编写一个小应用程序,我想使用Nick Baker的文件上传插件。我下载了cakephp2.0分支(我知道还没有完成),并将其放在我的应用程序插件文件夹中。我对它做了一些必要的修改,但我很好奇,用
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()中定义的路径值
  • 它将无法加载
    App::import('Component','Component')
    use
    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');

简单。直截了当的对的非常感谢。