6

この質問はすでに聞かれていることは知っていますが、自動読み込みプロセスが composer で少し変わったようです。

サイレックス プロジェクトにクラス ライブラリを追加したいだけです。

そこで、次のファイルを作成しました: vendor\lib\picture.php

<?php
namespace MyNamespace;

class Picture
{
    function testage()
    {
        echo 'hihaaa ça marche'; exit;
    }
}

vendor/composer/autoload_namespaces.php で、次の行を大きな配列に追加しました。

'MyNamespace' => $vendorDir . '/lib/',

そして、私が追加したメインファイルに:

use MyNamespace\Picture as Picture;

そしてそれを次のように呼び出しました:

$app->register(new Picture());

これは私にこのエラーを与えます:

Fatal error: Class 'MyNamespace\Picture' not found...

コマンドラインなしで、任意のコントローラーから簡単に使用できるクラスを追加する方法がわかりません(composerを使用せず、事前に構成されたsilexをダウンロードしました)、何か考えはありますか?

4

3 に答える 3

12

コンポーザーを使用している場合は、ベンダーディレクトリを変更しないでください。ファイルを追加したり、composerで生成されたファイルを変更したりしないでください。

これらのクラスをsrcディレクトリに配置することをお勧めします。@gunnxは、で自動読み込みを構成しcomposer.jsonて、実行するたびに再生成されるようにする方法を示していますcomposer install

ファイルはにありますsrc/MyNamespace/Picture.php。の自動ロード構成は次のようにcomposer.jsonなります。

{
    "autoload": {
        "psr-0": { "MyNamespace": "src/" }
    }
}

実際の解決策は、前の2つの答えを組み合わせたものです。しかし、詳細を正しく理解することが重要だと思います;-)。

于 2012-07-21T19:17:15.180 に答える
2

Picture クラスは次のファイルにある必要があります: vendor/lib/MyNamespace/Picture.php. 完全な名前空間と大文字小文字に注意してください。

于 2012-07-21T16:07:04.377 に答える
2

composer.json に以下を追加することで、独自のコードをオートローダーに追加できます。

{
"autoload": {
    "psr-0": {"Acme": "src/"}
}
于 2012-07-21T18:01:42.740 に答える