3

私は最後の日、Symfony Yaml パーサーをアプリケーションで動作させるのに苦労しています。

composer.jsonはこのように見えます。

{
"require": {
    "symfony/class-loader": "2.4.*@dev",
    "symfony/yaml": "2.4.*@dev",
    "facebook/php-sdk": "dev-master"
},
"autoload": {
    "psr-0": {
        "MyApp": "src/"
    }
}

私は自分のアプリケーションでこれを使用しています:

use Symfony\Component\Yaml\Parser;

$parser = new Parser();
var_dump( $parser->parse( file_get_contents('config.yml') ) );

次に、次のエラーが表示されます。

( ! ) 致命的なエラー: クラス 'Symfony\Component\Yaml\Yaml' が /Projects/my-app/web/index.php の 16 行目に見つかりません

UniversalClassLoader (から"symfony/class-loader") は完全に正常に動作し、ロードされている名前空間を確認すると、これSymfony\Component\Yamlが配列の最初の名前空間です。

私のIDE(PHPStorm)は、クラス名の下に「複数の定義が存在します」という波線を表示しています。1 つは実際のベンダー フォルダに移動し、もう 1 つはファイル内のcomposer.pharファイルを参照しています (読み取り専用)。

私が間違っていることを誰かが知っていますか?

4

1 に答える 1

6

ブートストラップ コードを表示します。特に、オートローダーが作成されている場所。

一般に、S2 のオートロード ファイルではなく、composer によって生成されたオートロード ファイルを使用する必要があります。

これは機能します:

require_once __DIR__ . '/../vendor/autoload.php';

use Symfony\Component\Yaml\Parser;

$parser = new Parser();

var_dump( $parser->parse( file_get_contents('config.yml') ) );
于 2013-07-16T14:25:04.977 に答える