W tej chwili mam instancji 3rd klasę partii wewnątrz jednego z moich usług:Jak przekazać parametry do serwisu fabrycznego w czasie wykonywania?
$message = new ChatMessage($apiKey);
$message->setFrom($fromUser);
$message->setBody($messageText);
$message->etc ...
którego chcę, aby włączyć do eksploatacji. Klucz apiKey jest określany w czasie wykonywania w zależności od miejsca, w którym wysyłana jest wiadomość, więc muszę mieć możliwość ustawienia go w czasie wykonywania. Mam aż do utworzenia tego config dla usługi:
class ChatMessageFactory
{
function createChatMessage($apiKey) {
return new ChatMessage($apiKey);
}
}
services.yml:-
services:
chatmessage_manager:
class: ChatMessage
factory: [ChatMessageFactory, createChatMessage]
arguments: ["%flow.apiKey%"]
, ale jak przekazać mój parametr do createChatMessage? Nie wiadomo, kiedy kontener zostanie utworzony?
Czy Twój kod działa? czy widziałeś http://symfony.com/doc/current/components/dependency_injection/factories.html#passing-arguments-to-the-factory-method – smarber
Do createChatMessage argument, który przechodzisz do tej pory, jest tablicą – smarber
@ smarber Widziałem ten przykład, ale klucz, przez który przechodzę, nie jest zdefiniowany aż do momentu, w którym natychmiast utworzę klasę, czyli bez usługi. Nie chcę przekazać całego kontenera, więc fabryka jest przekazywana jako parametr do tej usługi ... Mamy rozwiązanie, które wydaje się działać w tej chwili, ale nie jest w porządku, więc Uaktualnię to pytanie, gdy wiem, że działa poprawnie. –