2017-05-29 5 views
-1

Ist es in Symfony 3 möglich, eine eigene Option in die Datei service.yml einzufügen und sie dann zu verwenden?Wie verwende ich eine benutzerdefinierte Option von service.yml?

Zum Beispiel habe ich in meinen service.yml eine Beschreibungsdatei:

services: 
    app.message_generator: 
     description: 'Some description...' 
     class:  AppBundle\Service\MessageGenerator 
     arguments: [] 

Wenn es möglich ist, wie kann ich diese Beschreibung von meiner Dienstklasse bekommen?

Ich habe versucht, zB .:

$this->container->get('app.message_generator'); 

aber ich die Informationen nicht sehen kann.

Danke.

+0

Ich glaube nicht, dass Sie es aus dem Behälter zu bekommen sind. Sie könnten die Konfiguration selbst aus der XML-Datei laden. –

+0

Es ist ein gültiger Punkt, dass dies ein XY-Problem sein könnte; lassen Sie uns wissen, was Sie damit machen wollen, was Sie erreichen wollen. –

+0

Ich möchte eine Liste von Diensten in meiner Anwendung mit Beschreibungen der Dienste haben. – user1639572

Antwort

0
services: 
    app.message_generator: 
     description: 'Some description...' 
     class:  AppBundle\Service\MessageGenerator 
     arguments: ['Some description...'] 

Offensichtlich müssen Sie ein Argument in Ihrem Service hinzufügen.

0

Haben Sie versucht, so etwas wie:

services: 
app.message_generator: 
    class:  AppBundle\Service\MessageGenerator 
    arguments: [ 'Some description...' ] 

und in der Service-Klasse:

/** 
* @param string  $description 
*/ 
public function __construct(
    $description) 
{ 
    $this->description = $description; 
} 

Aber um ehrlich zu sein, ich verstehe nicht, warum man es so tun würde, weil

  1. Wenn Sie einen allgemeinen Parameter benötigen, verwenden Sie parameter anstelle eines Servicearguments

  2. Wenn Sie eine service-spezifische Konstante benötigen, verwenden Sie eine Konstante in Ihrem Service.

Z. B .:

class Service 
{ 

const DESCRIPTION = 'Some description...'; 
Verwandte Themen