1
Symfonyアプリケーションのコントローラからサービスクラスをロードする際に問題が発生しています。Symfonyでのサービスのインスタンス化の問題
サービスはReadathonBundle\Payments\Ipn
に常駐:
namespace ReadathonBundle\Payments;
class Ipn
{
private $testVariable;
/**
* Ipn constructor.
* @param $testVariable
*/
public function __construct($testVariable)
{
$this->testVariable = $testVariable;
}
}
私はservices.ymlのconfigの設定を追加しました:
parameters:
app.ipn.testVariable: test-value
services:
app.form.registration:
class: ReadathonBundle\Form\UserType
tags:
- { name: form.type, alias: app_user_registration }
app.ipn:
class: ReadathonBundle\Payments\Ipn
arguments: ['%app.ipn.testVariable%']
私は以下を使用して、私のコントローラでサービスを呼び出すようにしようとしていますスニペット:
class PayPalIPNController extends Controller
{
/**
* PayPal IPN
*
*/
public function listenerAction(Request $request)
{
$ipn = $this->get('app.ipn');
var_dump($ipn->testVariable);
}
この結果、folメッセージ:
名前空間 「ReadathonBundle \ Payments」からクラス「Ipn」をロードしようとしました。別の名前空間 の "使用"ステートメントを忘れましたか?
私はどこかで単純なものを逃してしまったと感じていますが、私の指をそれに置くことはできません。
問題はどこですか?
正しいディレクトリ構造はありますか?投稿できますか?また、オブジェクトのプライベートプロパティを読み取ろうとしています。それは正しくなく、うまくいかないでしょう。カプセル化について読む。最後に、この例外は 'Ipn'クラスをロードしようとしているコードがないので別の場所からスローされます。 –
@MichaelSivolobovが指摘しているように、あなたのディレクトリ構造を確認すると、それはタイプミスかもしれません。クラスはデフォルトのディレクトリ構造に従って 'src/ReadathonBundle/Payments/Ipn.php'になければなりません。また、プロダクションに参加している場合は、キャッシュをクリアすることを忘れないでください。 – chalasr