2012-02-08 35 views
14

我有一個叫做MyClass的類。它位於app/Lib/MyDir/MyClass中。我想使用App:uses()加載它,但無法使其運行。CakePHP 2.X - 在app/Lib目錄中加載自定義類

在CakePHP 1.3我將通過加載:

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

在CakePHP 2.1我試圖做的事:

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

當我嘗試 '新' 了MyClass的我得到的類「 MyClass'找不到。

是不是可以在自定義Lib類上使用App :: uses?我不能繼續使用App :: import(),因爲如果'App :: import('Lib','MyDir/MyClass');'在代碼路徑中出現2x我在lib/Cake/Core/App.php上得到一個'Can not redeclare class'錯誤在線531

我在做什麼錯?

編輯:所以如果我做的應用程序:: uses('MyClass','MyDir');有用。不知道這是否應該如何行爲,但報告錯誤。

+0

我發現了下面的提交應該解決這個問題(將使我的使用上面的作品)。一旦它成爲一個版本,我會更新這個問題。 https://github.com/cakephp/cakephp/commit/8ed4876830546593f20db6c7e9aed299aa76a80a – rynop 2012-02-09 00:59:52

+0

**誰googles這**確保該文件包含一個具有相同名稱的類。 [更多信息在這個答案](http://stackoverflow.com/questions/19120409/cakephp-unable-to-load-class-from-app-lib/37231878#37231878) – 2016-05-14 21:08:08

回答

20

,您是否試圖

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

?因爲「Lib」本身可以被看作是一個基本目錄

PS:你甚至應該把Lib裏面的所有東西都放在與文件夾相似的子文件夾(包)中。

+0

是的這有效。但這似乎並不直觀。 http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#App::uses甚至有一個'Lib'的例子。是的,我試圖把所有的東西放在子文件夾中。 可以說,我沒有在子目錄中的Lib目錄中的類(它只是在app/Lib/MyClass.php中) - 我不能用:: uses()加載它嗎? – rynop 2012-02-08 23:15:24

+0

是的,你是。它不僅僅是App :: uses('MyClass','Lib');但應該避免:) – mark 2012-02-09 09:44:16

+0

我在CakePHP 2.5.4版本中工作。我需要在另一個Lib類中導入一個Lib類。例如 :我在Lib文件夾下有一個類Search.php,在Lib/Google文件夾下有GooglePlus.php。我需要在Search.php中使用GooglePlus.php文件,但它不起作用。 我在http://book.cakephp.org/2.0/en/core-utility-libraries/app.html中嘗試了app:build功能,用於註冊Lib類。 如何在另一箇中使用一個lib類?或者如果不可能的話,這是什麼替代方法? – Dashrath 2014-12-19 09:44:40