2017-09-27 24 views
0

如何配置我创建的服务能够被类型提示?我看过的所有服务容器文档,以及任何与symfony的文档并没有什么我试图做作品......Symfony3类型提示创建的服务

将此添加到services.yml

Tester:  
     class: AppBundle\Services\Tester 
     public: true 

将此添加到我的课

use AppBundle\Services\Tester; 

尝试键入提示“Tester $ test”并获取错误。做错事...

+0

你会得到什么错误? –

+0

当我尝试添加邮件例如,它告诉我该类不存在.... – dlhines

+0

其实,这里是确切的输出...代码是有点不同,但错误是相同的... 类型错误:传递给AppBundle \ Services \ Tester :: onTest()的参数1必须是SwiftMailer的一个实例,没有给出,在/home/xXxX/symfony-test-sites/xXxX/src/AppBundle/Controller/TestLoggerController.php中调用在线30 – dlhines

回答

0

在这种情况下,Tester是一个服务名称,而不是作为服务的类名称。

如果在该位置的类,你也希望它是公共的(在$container->get('\AppBundle\Services\Tester')->get(Tester::class)使用,你可以这样定义它。

AppBundle\Services\Tester: 
    public: true 

如果你只打算要使用它作为一个类型提示,你不需要public:true,并且如果这个类是从其他地方导入的(可能在同一个文件的后面),你可能根本不需要这些行,除非它有参数如果你只需要它是get() -able在一个测试环境中,它可以值得创建一个服务别名,只为services_tesy.yml:

# available as ->get('test_Tester') in a test 
test_Tester: 
    class: AppBundle\Services\Tester: 
    public: true 
+0

我明白你在说什么。我真的忘记了它。我暂时忽略了它。我现在明白了,并且找到了一种方法来解决问题。谢谢! – dlhines

0

我找到了我需要的东西。我在Eclipse中遇到了yaml编辑器的问题。它制造了一堆标签,并且在其他领域也不断给我带来问题。我最终安装了YEdit,一切似乎都奏效。

谢谢你们!