2016-05-19 10 views
0

を投影するサードパーティ製のlibを追加し、私は私のSymfony2のプロジェクトに外部のライブラリをロードしたかったが、そのクラスを示すエラーを得た私のapp/autoloader.php見つかりませんでした。はSymfony2.7は、私がこだわっている

... 
$loader->add('Tinify', __DIR__.'/../vendor/tinify/tinify/lib'); 
... 

と私のファイル私が使用する場所、それはそれのようになります。The autoloader expected class "Tinify" to be defined in file "xyz/app/../vendor/tinify/tinify/lib\Tinify.php". The file was found but the class was not in it, the class name or namespace probably has a typo.

に従うが、vendor\tinify\tinify\lib\Tinify.php

下にファイルとして

<?php 

namespace XYZ\NewsBundle\Controller; 
... 

use Tinify; 

class NewsController extends Controller{ 
... 
public function displayAction($slug) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $external = new \Tinify(); 
} 

誤りがあります

namespace Tinify; 

const VERSION = "1.3.0"; 

class Tinify { 
... 
} 

それは本当にタイプミスが、Tinifyの1

+1

を実行する必要があります 'ない万一$ external = new \ Tinify(); '' $ external = new Tinify(); '? AFAIK '\'はPHPのネイティブクラスを使用している場合にのみ使用されます。 – KhorneHoly

+0

ありがとう、これは正しい方向に私を指摘した – Viszman

答えて

2

完全修飾クラス名がTinifyしかし\Tinify\Tinifyではありません表示されていない持っている場合、私がチェック。そのネームスペース+クラス名。あなたが行う必要がありますNewsControllerクラスで

use \Tinify\Tinify; 

はまた、名前空間の先頭にバックスラッシュを注意してください。これに

$external = new \Tinify(); 

$external = new Tinify(); 
1

はなぜTinyfyのthrought Composerをインストールしない

は、これを変更後のコードで、あなただけのクラス名を使用する必要がありますので、また、名前空間ではありませんか?このようコンポーザーに

composer require tinify/tinify 

ライブラリのデ自動ロードを処理し、手動で何をロードしないする必要はありません、あなただけのクラスのインスタンスを作成し、

$tinify = new Tinify(); 
+0

私はコンポーザー経由でインストールしたときに私はTinifyという名前のサービスがないというエラーが出てきた – Viszman

関連する問題