2012-04-04 4 views
6

私は知っておきたいsymfony2にサード・パーティーのphpファイルを含める最良の方法は何ですか? symfony2アプリケーションでファイルをアップロードするために、別のphp-ajaxパッケージを使用しています。このパッケージは私のsymfonyコントローラで使う必要があるphp oopsコードを提供しています。私は私のコントローラにそのコードのオブジェクトを作成しています。だから私はそのサードパーティ製のコードやファイルをどこに置くことができるのか知りたいのですが、symfony2コントローラにそのコードのオブジェクトを組み込む方法や作成する方法はありますか? symfony2でもrequireまたはincludeを使用していますか?もしそうなら唯一のアプローチです。ベスト・アプローチSymfony2にサード・パーティー・ファイルを含めるには

答えて

7

サードパーティ製のライブラリに名前空間を追加しようとしているとは確信していません。たとえば、Twigは名前空間を使用しません。そして本当に必要はありません。たとえば、Zend_Framework 1ライブラリのPDFコンポーネントを使用する場合を考えてみましょう。あなたのようなものだろうあなたのアプリ/ 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); 

名前空間の不足を回避するには、\を使用する必要があります。

この回答は、第3部ライブラリが多かれ少なかれ標準的なクラス命名規則に従っていると仮定しています。自動ロード機能を持っている場合は、autolaod.phpから呼び出してください。オートローディングをまったく使用したくない場合は、インクルードパスを設定して離れてください。

+1

を探してそれを確認することができます。ライブラリが命名規則に従わない場合は、作者([repo](https://github.com/composer/composer)、[symfony](https://github.com/symfony/symfony) -標準))。これは、任意のライブラリのマッピングを可能にし、慣例に従わないライブラリであっても自動ロードを可能にします。 – gilden

3

The documentationが詳細にディレクトリ構造を説明します。

基本的にはどこにでも置くことができますが、一貫性とベストプラクティスのために、サードパーティライブラリをvendor/ディレクトリに配置する必要があります。

関連するファイルを名前空間に含めることができます。

+1

偉大な答え!私はこの状況をしばらく前にして、これをまったく同じように解決しました... –

+0

@Hakan Deryal。ご回答いただきありがとうございます。ベンダの第三者としてフォルダを作成し、thirdpartyファイルをベンダ/ thirdparty/myfile.phpに配置して、どうすればAcme Bundleに含めることができますか教えてください。 – ScoRpion

+0

サードパーティアプリケーションは名前空間を使用していますか?あなたは、これはそれを行うための正しい方法は「....名前空間」のようなファイルの先頭に行を –

関連する問題