2011-11-16 13 views
33

私は現在、プロジェクトの1つをCakePHP 2.0にアップグレードしています。残念ながら、コードの「最初の行」は問題を引き起こし、その問題の解決策を見つけることはできません。CakePHP 2.0にベンダーファイルを読み込む

CakePHP 1.3では、AppControllerクラスが定義される直前にApp::import("Vendor", "facebook");というステートメントがありました。参照されるファイルは/app/vendors/facebook/facebook.phpの下にあります(それ自体がbase_facebook.phpファイルを含んでいます)。

私は、ファイルの命名とクラスのロードに応じてCakePHPの2.0で、今のファイルを含めるにはさまざまな方法を試してみましたが、ここで説明:File naming and class loading changes in CakePHP 2.0

を私はapp/Vendor/Facebook/Facebook.php、またはapp/Vendor/Facebook/facebook.phpへのパスと名前を変更し、次の方法を試してみました:

App::uses("Facebook", "Vendor/Facebook"); 
App::uses("Facebook", "Facebook"); 
App::uses("Facebook", "Vendor/Facebook/Facebook.php"); 
App::uses("Facebook", "Vendor"); 

誰もベンダーファイルを参照する方法はまだありますか?そのため、上記の方法は、それがこれをデバッグするような迷惑なんだ...

答えて

53

ベンダーは、CakePHPでApp::uses()を使用してロードすることはできませんので、CakePHPは外部ライブラリが続くことを期待することはできませんので、これは、エラー/警告を発射していない遅延読み込みのフォルダとファイルの命名に関する同じ基準。フレームワークのバージョン1.3で行ったように、App::import('Vendor', ...)を使用することはできます。

今、ベンダーのためにApp::import()を使用することは、あなたがそれについて考えれば、愚かなことです。それはrequire_once()のためのちょうど高価で、冗長で非常に愚かな包みです。

2.0では、実際に、ベンダーのライブラリにrequireまたはrequire_onceを使用するように勧めています。ベンダフォルダの場所は、App::path('Vendor')またはAPP . 'Vendor' . DSを使用して取得できます。

+0

こんにちはサンノゼ、迅速な返信用 THXの古いバージョンで。 require_onceはうまく動作します - 私はそれを考えていませんでした。それでも、古いApp :: import( "Vendor"、...)構文は私のためには機能しません。 –

+2

Btw、あなたがクラスへの相対パスを提供する必要があるので、それが動作しないことを示す古いApp :: import()の使用法。 import()はパフォーマンスの理由からディレクトリを再帰的に探しません。 私はそれについての報告を聞いたことがありますが、チケットトラッカーにはチケットが開かれていません。しかし、その機能の単体テストはすべて期待通りに行っています。私は実際にそれが期待どおりに動作することを実際に検証するための実例を書こうとします。ありがとう! –

+4

したがって、App :: import( "Vendor"、 "Facebook/Facebook")はあなたの場合にはこのトリックを行うべきです。 – mark

0

ケーキのドキュメントアプリを使用する非stanardプラグインを持っている場合しかし、それはまた述べAppを使用して::の用途() including-files-with-app-import

を示唆::インポート()

App::import('Vendor', 'phpQuery', array('file' => 'bariew/phpquery/phpQuery/phpQuery.php')); 
0

はあなたを想定'ベンダーファイルは/app/vendors/facebook/facebook.phpにあります。

次の行は、Appのような同じことを行う必要があります::インポートを()CakePHPの

require_once(ROOT . DS . 'app' . DS .'Vendor' . DS . 'facebook' . DS . 'src' . DS . 'facebook.php'); 

$facebookApi = new facebook(); 
関連する問題