【发布时间】:2016-04-19 14:48:05
【问题描述】:
我在从我的 Symfony 应用程序中的控制器加载服务类时遇到问题。
服务驻留在ReadathonBundle\Payments\Ipn:
namespace ReadathonBundle\Payments;
class Ipn
{
private $testVariable;
/**
* Ipn constructor.
* @param $testVariable
*/
public function __construct($testVariable)
{
$this->testVariable = $testVariable;
}
}
我已经在 services.yml 中添加了配置设置:
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%']
我正在尝试使用以下 sn-p 调用我的控制器中的服务:
class PayPalIPNController extends Controller
{
/**
* PayPal IPN
*
*/
public function listenerAction(Request $request)
{
$ipn = $this->get('app.ipn');
var_dump($ipn->testVariable);
}
这会导致 500 错误并显示以下消息:
试图从命名空间加载类“Ipn” “ReadathonBundle\Payments”。您是否忘记了“使用”声明 另一个命名空间?
我觉得我在某个地方遗漏了一些简单的东西,但又不能完全抓住它。
问题出在哪里?
【问题讨论】:
-
你有正确的目录结构吗?你能发帖吗?此外,您正在尝试读取对象的私有属性。这是不对的,也不会起作用。阅读有关封装的信息。最后:这个异常可以从另一个地方抛出,因为你没有任何代码试图加载你的
Ipn类。 -
正如@MichaelSivolobov 所指出的,请验证您的目录结构,这可能是一个错字,该类必须位于
src/ReadathonBundle/Payments/Ipn.php中,遵循默认目录结构。此外,如果您在生产中,请不要忘记清除缓存(看起来很明显但并不总是......)。
标签: php symfony service containers