2011-05-31 17 views
6

merak ediyorum.Bağımlılıklar Symfony2'nin

Mesela ben bir NewsBundle var. Şimdi bir CommentBundle olup olmadığını kontrol etmek zorundayım. Eğer bir tane varsa, birkaç tane daha kod koymalı.

Herhangi bir öneriniz var mı?

cevap

3

Her paketin sahip olması gereken ana Bundle sınıfında class_exists kullanabilirsiniz. Belirli hizmet Kumandanızda gelen var (veya başka bir kap tanıyan kodu) eğer

if (class_exists('Acme\CommentBundle\AcmeCommentBundle')) 
{ 
    // Bundle exists and is loaded by AppKernel... 
} 
+0

Sevgili @markymark, bunun size doğru sonuç vereceğinden emin misiniz? demeti dosya sisteminde mevcut değil (ne hizmetler yüklendi ne Paketin yolları anlamında) AppKernel' 'kaydedildi: durum düşünün. o 'class_exists ('Bazı \ Ad \ Uzay \ Sınıfı') özdevinimli o paket ile sicil değildi hatta rağmen sınıf çalışacağız doğru değil mi? Bunun hakkında ne düşünüyorsun acaba? HTH –

24

markymark cevabı ek olarak, kontrol edebilirsiniz aşağıdaki snippet'iyle:

Örneğin

if ($this->container->has('foo_service.alias')) 
{ 
    // service is loaded and usable 
} 

Belirli bir hizmetin tam adından emin değilseniz veya yalnızca tekmeler ve kıkırdıyorsanız, kabine kayıtlı tüm hizmetleri görmek için konsol komutunu php app/console container:debug çalıştırabilirsiniz.

+3

1, cevabın yukarıdaki biri olarak bana daha net ve doğru. Servis talep etmek daha iyidir - demetler için değil. – Besnik

0

Kernel sınıfı bir paket kayıtlı ise, belirli bir sınıfın bir aktif grubunun parçası ya da kontrol etmek için bir yardımcı yöntemlerinin bir listesini ihtiva eder.

public BundleInterface[] getBundles() 
    Gets the registered bundle instances. 

public bool isClassInActiveBundle(string $class) 
    Checks if a given class name belongs to an active bundle. 
İlgili konular