【发布时间】:2013-10-02 01:11:52
【问题描述】:
我使用 CakePHP 已经有一段时间了,但我仍然不太明白 /Lib 与 /Plugin 与 /Vendor 中的内容。我知道插件基本上是带有自己的控制器等的迷你应用程序。但是在很多情况下,这三个似乎都是不错的选择。有人可以对此有所了解吗?
【问题讨论】:
标签: php cakephp cakephp-2.0
我使用 CakePHP 已经有一段时间了,但我仍然不太明白 /Lib 与 /Plugin 与 /Vendor 中的内容。我知道插件基本上是带有自己的控制器等的迷你应用程序。但是在很多情况下,这三个似乎都是不错的选择。有人可以对此有所了解吗?
【问题讨论】:
标签: php cakephp cakephp-2.0
库
包含并非来自第 3 方的第 1 方库或 外部供应商。这允许您将组织的 来自供应商库的内部库。
插件
包含plugin 包。
供应商
任何第三方类或库都应该放在这里。 这样做可以使用 App::import(‘vendor’, ‘名称’) 函数。敏锐的观察者会注意到这似乎是多余的, 因为我们目录的顶层还有一个供应商文件夹 结构体。我们将在我们了解两者之间的差异时 讨论管理多个应用程序和更复杂的系统设置。
来源:http://book.cakephp.org/2.0/en/getting-started/cakephp-folder-structure.html
为了进一步澄清,Lib推荐用于您自己编写的库。这可能只是几个类或整个库。 Vendor 推荐用于例如可以从 github 下载的库或脚本。 Plugin 仅限于 cakephp 框架插件。
关于 Lib 与 Vendor 对于您自己的脚本或第 3 方脚本,我知道没有区别。我已经将我自己的脚本放在两个位置以及第 3 方脚本中,并且没有任何区别。这只是一种推荐的文件整理方式。
您可以使用与require_once() 相同的App::import() 从Lib 或Vendor 加载脚本。要加载遵循 cakephp 约定的框架文件或您自己的脚本,您将使用App::uses()。这使用使用App::path() 或App::build() 定义的路径来查找文件。
【讨论】:
App::import() 访问,而 Lib 的东西似乎需要App::uses() 和其他一些配置。我确信它们的实现方式不同是有充分理由的,但这对我来说并不明显。