Php 在Symfony中实例化服务时遇到的问题
我在Symfony应用程序中从控制器加载服务类时遇到问题 该服务位于Php 在Symfony中实例化服务时遇到的问题,php,symfony,service,containers,Php,Symfony,Service,Containers,我在Symfony应用程序中从控制器加载服务类时遇到问题 该服务位于ReadathonBundle\Payments\Ipn: namespace ReadathonBundle\Payments; class Ipn { private $testVariable; /** * Ipn constructor. * @param $testVariable */ public function __construct($testVari
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%']
我正在尝试使用以下代码段调用控制器中的服务:
class PayPalIPNController extends Controller
{
/**
* PayPal IPN
*
*/
public function listenerAction(Request $request)
{
$ipn = $this->get('app.ipn');
var_dump($ipn->testVariable);
}
这将导致500错误,并显示以下消息:
试图从命名空间加载类“Ipn”
“ReadathonBundle\Payments”。您是否忘记了“使用”语句
另一个名称空间
我觉得我在某个地方遗漏了一些简单的东西,但我不能完全确定
哪里出了问题?这个问题会困扰我很长时间。我花了一天的大部分时间在这个问题上
它不起作用,因为我在服务类文件名*facepalm*.的末尾没有.php。这将困扰我很长一段时间。我花了一天的大部分时间在这个问题上
它不起作用,因为我在服务类文件名*facepalm*.的末尾没有.php。您有正确的目录结构吗?你能把它寄出去吗?您还试图读取对象的私有属性。这是不对的,也行不通。阅读有关封装的内容。最后:这个异常可以从另一个地方抛出,因为你没有任何代码试图加载你的
Ipn
类。正如@Michaelsivolabov所指出的,验证你的目录结构可能是一个输入错误,该类必须位于默认目录结构之后的src/ReadathonBundle/Payments/Ipn.php
中。另外,如果您在生产环境中,不要忘记清除缓存(看起来很明显,但并不总是…),您有正确的目录结构吗?你能把它寄出去吗?您还试图读取对象的私有属性。这是不对的,也行不通。阅读有关封装的内容。最后:这个异常可以从另一个地方抛出,因为你没有任何代码试图加载你的Ipn
类。正如@Michaelsivolabov所指出的,验证你的目录结构可能是一个输入错误,该类必须位于默认目录结构之后的src/ReadathonBundle/Payments/Ipn.php
中。另外,如果您正在生产中,不要忘记清除缓存(看起来很明显,但并不总是…)。