2012-02-08 11 views
14

Aradığım bir Sınıf var Sınıfım. App/Lib/MyDir/MyClass yaşıyor. Yüklemek için App: uses() kullanmak istiyorum, ancak işe yaramaz.CakePHP 2.X - uygulamada özel sınıf yükleme/Lib dir

ben yoluyla yük olacağını CakePHP'de 1.3 olarak:

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

CakePHP 2.1 ben yapmaya çalışıyorum In: Ben 'yeni' çalıştığınızda

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

Sınıfım kadar ben Sınıf olsun ' MyClass 'bulunamadı.

App :: kullanımlarını özel Lib sınıflarında kullanmak mümkün değil mi? App :: import() öğesini kullanmaya devam edemiyorum çünkü 'App :: import (' Lib ',' MyDir/MyClass ');' kod yolunda 2x, 531

numaralı satırda 'Redeclare sınıf açılamıyor' hatası aldığımda yanlış olan ne yapıyorum?

Düzenleme: App yaparsam kullanır: kullanır ('MyClass', 'MyDir'); işe yarıyor. Bunun nasıl davranması gerektiği, ancak hatayı bildirdiğinden emin değil.

+0

Sorunu çözmesi gereken aşağıdaki işlemi buldum (kullanımını yukarıda yaptığım gibi yapacak). Bir kez yayınlandığında bu soruyu güncelleyeceğim. https://github.com/cakephp/cakephp/commit/8ed4876830546593f20db6c7e9aed299aa76a80a – rynop

+0

** bunu herkes googles ** dosyanın aynı ada sahip bir sınıf içerdiğinden emin olun. [bu yanıtta daha fazla bilgi] (http://stackoverflow.com/questions/19120409/cakephp-unable-to-load-class-from-app-lib/37231878#37231878) –

cevap

20

Eğer

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

denedin mi? "Lib" nin kendisi bir temel dizin olarak görülebileceğinden dolayı, Lib içerisindeki her şeyi çekirdekle benzer alt klasörlerde (paketler) gruplamanız gerekir.

+0

Evet, bu işe yarar. Ama bu sezgisel görünmüyor. http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#App::uses 'Lib' için bile bir örneği vardır. Evet, her şeyi alt klasörlere koymaya çalışıyorum. Bir alt klasörde Lib dizininde bir sınıf olmadığımı söyler (sadece uygulamada/Lib/MyClass.php'deydim) - ile yükleyemem: uses()? – rynop

+0

evet, öylesiniz. Bu sadece App :: kullanır ('MyClass', 'Lib'); ama kaçınılmalıdır :) – mark

+0

Ben cakephp 2.5.4 sürümü çalışıyorum. Bir Lib sınıfını başka bir Lib sınıfında almam gerek. Ex için : Lib klasörünün altında bir Search.php sınıfı ve Lib/Google klasörü altında GooglePlus.php var. GooglePlus.php dosyasını Search.php'de kullanmam gerekiyor, ancak çalışmıyor. Uygulamayı denedim: Lib sınıfını kaydetmek için http://book.cakephp.org/2.0/en/core-utility-libraries/app.html adresinde de açıklanan yapı işlevi. Bir lib sınıfını bir diğerinde nasıl kullanırım? ya da mümkün değilse, bunun için alternatif bir yaklaşım nedir? – Dashrath