4

インターネット全体を徹底的に検索したような気がしますが、これを理解できないようです。Silex(最新バージョン)を使用していますが、SilexのServiceProviderシステムを使用してクラスのインスタンスを返して使用する方法がわからないようです。

私は基本的なサービスプロバイダーを作成する方法を知っています。

方法がわからないのは、このサービスプロバイダーにカスタムクラスを使用させる方法です。私は、ウェブ上で考えたり見つけたりできるすべてのことを試しました。問題の一部は、これに関するSilexのドキュメントがあまり広範ではなく、このタイプの問題について尋ねられた質問のほとんどは、それが行われた方法にかなり大きな変更が加えられる前に尋ねられた/答えられたということです。答えは最新ではありません。

つまり、簡単に言えば、Silexの$ app ['myclass']型システムを使用してクラスにアクセスし、$ app ['myclass']-> myMethod()のようなことができるようにします。

私が電話を切ったのはこれです。サービスプロバイダーを作成することはできますが、サービスプロバイダーにクラスを認識させる方法がわかりません。私は、composer auto-load pso-0を設定して名前空間全体を試し、MyClass/MyClassタイプのものを使用してみました。

ハハ、基本的に、ドキュメントが非常に少ないので、私が間違っている部分がある可能性があります。

カスタムライブラリ/クラスを$app変数に接続するための現在のステップバイステップのプロセスを誰かが作成しますか?これは私だけでなく他の人にも役立つと思います。ありがとう!

4

1 に答える 1

7

クラスの読み込みに問題があるようです。これは、以前autoloadはsilexのサービスによって処理されていたものです。ただし、そのサービスは削除され、作曲家の自動読み込みが採用されました。

で自動読み込みを指定することで、正しい方向に進んでいましたcomposer.json。作曲家に慣れていない場合は、概要をお読みください。自動読み込みの仕組みの詳細については、基本的な使用法の章の自動読み込みのセクションを参照してください。

ここで短いバージョンを提供します。ファイル名がPSR-0命名基準に準拠していることを確認してください。これをあなたに追加してくださいcomposer.json

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

Acme名前空間とsrcクラスのベースディレクトリに置き換える必要があります。たとえば、クラスAcme\Foo\Barはにありsrc/Acme/Foo/Bar.phpます。

次に、を実行php composer.phar updateして自動ロードファイルを再ダンプすると、クラスにアクセスできるようになります。

于 2012-11-08T16:10:00.307 に答える