【问题标题】:CakePHP 2.X - loading custom class in app/Lib dirCakePHP 2.X - 在 app/Lib 目录中加载自定义类
【发布时间】:2012-03-01 10:49:44
【问题描述】:

我有一个名为 MyClass 的课程。它位于 app/Lib/MyDir/MyClass 中。我想使用 App:uses() 来加载它,但无法让它工作。

在 CakePHP 1.3 中,我将通过以下方式加载它:

App::import('Lib', 'MyDir/MyClass');  //this still works in CakePHP 2.1

在 CakePHP 2.1 中我正在尝试做:

App::uses('MyClass', 'Lib/MyDir');

当我尝试“新建” MyClass 时,我得到 Class 'MyClass' not found。

不能在自定义 Lib 类上使用 App::uses 吗?我不能继续使用 App::import() 因为 if 'App::import('Lib', 'MyDir/MyClass');'在代码路径中出现 2x 我在第 531 行的 lib/Cake/Core/App.php 中收到“无法重新声明类”错误

我做错了什么?

编辑:所以如果我这样做 App::uses('MyClass', 'MyDir');有用。不确定它是否应该是这样,但报告错误。

【问题讨论】:

标签: php cakephp cakephp-2.0


【解决方案1】:

你试过了吗

App::uses('MyClass', 'MyDir');

?因为“Lib”本身可以看作是一个基本目录

PS:您甚至应该将 Lib 中的所有内容分组到类似于核心的子文件夹(包)中。

【讨论】:

  • 是的,这行得通。但这似乎并不直观。 book.cakephp.org/2.0/en/core-utility-libraries/… 甚至有一个“Lib”的例子。是的,我正在尝试将所有内容都放在子文件夹中。假设我在子文件夹的 Lib 目录中没有一个类(它只是在 app/Lib/MyClass.php 中)-我不能用 ::uses() 加载它吗?
  • 是的,你是。它不仅仅是 App::uses('MyClass', 'Lib');但应该避免:)
  • 我正在使用 cakephp 2.5.4 版本。我需要在另一个 Lib 类中导入一个 Lib 类。例如:我在 Lib 文件夹下有一个类 Search.php,在 Lib/Google 文件夹下有一个 GooglePlus.php。我需要在 Search.php 中使用 GooglePlus.php 文件,但它不起作用。我尝试了book.cakephp.org/2.0/en/core-utility-libraries/app.html 中描述的 app:build 函数来注册 Lib 类。我如何在另一个中使用一个 lib 类?或者如果不可能,有什么替代方法?
  • 这是可能的,就像我上面描述的那样:始终对您在每个文件顶部使用的所有类使用 App::uses(),它会正常工作。
猜你喜欢
  • 2014-04-26
  • 2014-09-28
  • 2015-02-15
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
相关资源
最近更新 更多