サードパーティの php ファイルを symfony2 に含める最良の方法を教えてください。symfony2 アプリケーションでファイルをアップロードするために、別の php - ajax パッケージを使用しています。このパッケージは、symfony コントローラーで使用する必要があるいくつかの php oops コードを提供します。コントローラーでそのコードのオブジェクトを作成しています。そのため、そのサードパーティのコードまたはファイルをどこに配置できるか、およびそのコードのオブジェクトをsymfony2コントローラーに含めるまたは作成する方法を知りたいです。symfony2 でも require または include を使用しますか。そうであれば、それが唯一のアプローチです。
2 に答える
名前空間をサード パーティのライブラリに追加しようとしているかどうかはよくわかりません。たとえば、Twig は名前空間を使用しません。そして、本当に必要はありません。たとえば、Zend_Framework 1 ライブラリの PDF コンポーネントを使用する場合を考えてみましょう。
app/autoload.php ファイルで次のようにします:
$loader->registerPrefixes(array(
'Twig_Extensions_' => $ws . 'Symfony/vendor/twig-extensions/lib',
'Twig_' => $ws . 'Symfony/vendor/twig/lib',
'Zend_' => $ws . 'ZendFramework-1.0.0/library',
));
// And since Zend internally uses require/include we need to set an include path
ini_set('include_path','.' .
PATH_SEPARATOR . $ws . 'ZendFramework-1.0.0/library'
);
この時点で、オートロード システムにクラスの検索とインクルードを任せながら、コントローラー内にサード パーツ オブジェクトを作成できるはずです。
$page = new \Zend_Pdf_Page(\Zend_Pdf_Page::SIZE_A4);
$doc->pages[] = $page;
$font1 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_HELVETICA);
$font2 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_COURIER_BOLD);
名前空間の不足を回避するには、\ を使用する必要があります。
この回答は、サード パーツ ライブラリが多かれ少なかれ標準的なクラス命名規則に従っていることを前提としています。独自の自動ロード機能がある場合は、autolaod.php からも呼び出すだけです。また、オートローディングをまったく使用したくない場合は、インクルード パスを設定してインクルード アウェイします。
ドキュメントには、ディレクトリ構造が詳細に説明されています。
基本的に、どこにでも置くことができますが、一貫性とベストプラクティスに従うために、サードパーティのライブラリをvendor/
ディレクトリに置く必要があります。
関連するファイルを名前空間に含めることができます。