2017-04-06 3 views
2

私はCakePHP 3で動作するアプリケーションを持っており、私のパッケージはComposer経由でインストールしています。Composerを使用している場合、PHPパッケージのサブクラスを参照する正しい方法は何ですか?

最近、私はphpspec/php-diffhttps://packagist.org/packages/phpspec/php-diff)を追加し、composer updateを実行しました。しかし、このパッケージのドキュメントがhttps://github.com/chrisboulton/php-diff/blob/master/example/example.php#L43上の例としてこれを与え

// src/Controller/UrlsController.php 
// ... 

use Diff; 

public function test() 
{ 
    $diff = new Diff(foo, bar); 
    // This works 
} 

:それはvendor/phpspec/php-diff/

に私はこのような私のCakePHPのコントローラのいずれかでクラスをインスタンス化することができ、予想通り、ファイルを入れていますの後にとなる(test()で行われるように)Diffとなります。どこInline.php生活それは作曲階層ではないので

require_once dirname(__FILE__).'/../lib/Diff/Renderer/Html/Inline.php'; 
$renderer = new Diff_Renderer_Html_Inline; 
echo $diff->render($renderer); 

明らかrequire_once文は動作しません。

new Diff_Renderer_Html_Inlineをどのようにインスタンス化しますか?私はちょうどこのことエラーが

クラス「のApp \コントローラ\ Diff_Renderer_Html_Inline」私はrequire_onceでパスを変更することであってもよいと思った別の回避策は、それはそれを指して

見つからない

を言うようにそれを使用している場合は場所がvendor/にあります。しかし確かに良い解決策がありますか?

+0

おそらくでしょう(作曲をサポートしています)PSR-0スタイルの自動ロードですので、 '新しい\デフ\レンダラ\ Htmlの\ Inline' – apokryfos

+0

ありがとう、私はすでに試してみましたが、同様のエラーが出ました。クラス 'Diff \ Renderer \ Html \ Inline'が見つかりませんでした。 – Andy

+0

'new \ Diff_Renderer_Html_Inline'(ルートNS相対)おそらく動作するでしょう – apokryfos

答えて

2

クラスを別の名前空間から参照しようとする場合は、完全修飾名を使用してクラスを参照する必要があります。

new \Diff_Renderer_Html_Inline; 

または実行できるようにするには、名前空間宣言の後use Diff_Renderer_Html_Inlineを追加します。new Diff_Renderer_Html_Inline