2016-04-09 16 views
0

Servisimden bir yardımcı aramak istiyorum.Servisten bir yardımcı arayın Servis

adında bir tanımsız bir yöntemi çağırmak için çalışıldı
$notificationService = $this->get('Notification'); 

Symfony'nin sihirli değil sınıfın

+0

Bu yöntemi nerede aradınız? Sınıfınızı paylaşabilir misiniz? – Federkun

+0

Sorun değil, “App \ Bundle \ Services \ Notification;” i kullanarak başlığımda hizmetimi bildirdim ve bunu başlattım. $ $ BildirimService = new Notification(); ' – Paul

cevap

3

ait "get". Symfony sadece PHP'dir. Symfony ile çalışırken hatırlaman gereken en önemli şey bu.

Sınıfınızda get() yöntemi yoksa, yöntemi çağırabilirsiniz. Denetleyicinizde, FrameworkBundle'ın Controller tabanından uzarsınız. Bu sınıf böyle bir yöntem içerir, böylece bir denetleyicide bu yöntemi çağırabilirsiniz.

Artık yeni hizmetinizde Notification hizmetini kullanmak istiyorsunuz. Kapsayıcıdan almak yerine, kapsayıcıyı oluştururken hizmetinize enjekte etmesine izin verin.

# app/config/services.yml 
services: 
    app.your_service: 
     class: AppBundle\Some\Class 
     arguments: ['@Notification'] # <<-- this tells to inject the service 

Sonra Sınıfınızda bu uyarlama: Bazı servis yapılandırma ile bunu

class SomeClass 
{ 
    private $nofication; 

    public function __construct(NotificationInterface $notification) 
    { 
     $this->notification = $notification; 
    } 
} 

bu konuda açıklanacak çok daha fazlası var. Bkz. http://symfony.com/doc/current/book/service_container