benim hizmetlerden biri içinde bir 3. parti sınıfını başlatmasını ediyorum:Parametreleri çalışma zamanında bir fabrika hizmetine nasıl geçiririm? Şu anda
$message = new ChatMessage($apiKey);
$message->setFrom($fromUser);
$message->setBody($messageText);
$message->etc ...
Ben bir hizmete dönüştürmek istediğiniz hangi. ApiKey, mesajın gönderildiği yere bağlı olarak çalışma zamanında belirlenir, bu yüzden çalışma zamanında ayarlayabilmem gerekir. Ben kadarıyla hizmet için bu yapılandırma oluşturma gibi var:
class ChatMessageFactory
{
function createChatMessage($apiKey) {
return new ChatMessage($apiKey);
}
}
services.yml:-
services:
chatmessage_manager:
class: ChatMessage
factory: [ChatMessageFactory, createChatMessage]
arguments: ["%flow.apiKey%"]
ama nasıl benim parametreyi createChatMessage için geçmek? Konteyner oluşturulduğunda bilinmemektedir?
Kodunuz çalışıyor mu? Eğer createChatMessage içine http://symfony.com/doc/current/components/dependency_injection/factories.html#passing-arguments-to-the-factory-method – smarber
gördük şimdiye kadar geçiyoruz değişken bir dizi – smarber
olduğunu @ smarber Bu örneği gördüm, ama geçmekte olduğum anahtar şu ana kadar dersi hazırladığım zamana kadar, yani hizmet olmadan tanımlanmıyor. Tüm kapsayıcıyı geçmek istemiyorum, bu nedenle fabrika bu servise bir parametre olarak geçirilir ... Şu anda çalışıyor gibi görünen bir çözümümüz var, ancak doğru değil Soruyu düzgün çalıştığını bildiğim zaman ile güncelleyeceğim. (Bütün fikir konteyner zaten başlatıldı ve zaman Alan adı kodunu çalıştırıyorsanız tarafından conifugured olmasıdır gibi) –