Hey Zusammen,
kann mir zufällig jemand verraten wie man vom Controller aus Parameter an einen Konstruktor einer Serviceklasse übergeben kann?
folgendes Beispiel:
TestController.php
TestService
Services.yml
parameters:
a : '';
b : '';
AppBundle\Services\TestService:
class: 'AppBundle\Services\TestService
arguments: ['%a%', '%b%']
AppBundle\Repository\TestRepository:
class: 'AppBundle\Repository\TestRepository
factory: ['@doctrine.orm.entity_manager', getRepository]
arguments: [AppBundle:Test]
Wenn ich direkt in der services.yml den Parameter einen Wert zuweise, dann werden Sie auch an die TestService-Klasse übergeben, aber ich möchte das gerne über den Controller machen oder macht es keinen Sinn?
Mein Gedanke ist, dass die TestService-Klasse ohne die Parameter und das Repository eh nicht funktioniert, also macht es eher Sinn die Parameterübergabe über den Konstruktor laufenzulassen anstatt über Setter-Funktionen.
Danke für eure Hilfe!
Yugox
kann mir zufällig jemand verraten wie man vom Controller aus Parameter an einen Konstruktor einer Serviceklasse übergeben kann?
folgendes Beispiel:
TestController.php
PHP-Code:
class TestController {
public function startAction(TestService $testservice) {
$a = 1;
$b = 2;
$testservice->setParameter($a, $b); //Ich weiß das das falsch ist, dass würde nur gehen, wenn setParameter eine Funktion in der Klasse wäre.
Ich möchte aber das es über den Konstruktor geht, aber habe keine Ahnung wie/ob es so irgendwie funktioniert.
}
}
TestService
PHP-Code:
class TestService {
private $a;
private $b;
private $repository;
public __construct(TestRepository $testRepo, $a, $b) {
$this->repository = $testRepo;
$this->a = $a;
$this->b = $b;
}
}
parameters:
a : '';
b : '';
AppBundle\Services\TestService:
class: 'AppBundle\Services\TestService
arguments: ['%a%', '%b%']
AppBundle\Repository\TestRepository:
class: 'AppBundle\Repository\TestRepository
factory: ['@doctrine.orm.entity_manager', getRepository]
arguments: [AppBundle:Test]
Wenn ich direkt in der services.yml den Parameter einen Wert zuweise, dann werden Sie auch an die TestService-Klasse übergeben, aber ich möchte das gerne über den Controller machen oder macht es keinen Sinn?
Mein Gedanke ist, dass die TestService-Klasse ohne die Parameter und das Repository eh nicht funktioniert, also macht es eher Sinn die Parameterübergabe über den Konstruktor laufenzulassen anstatt über Setter-Funktionen.
Danke für eure Hilfe!
Yugox
Kommentar