Întrebarea nu o face explicită, dar deoarece întrebarea menționează obținerea unei erori atunci când un alt modul nu este instalat, înțeleg că conditia este când modulul este instalat. În acest caz, modulul poate folosi pur și simplu următorul cod.
funcția publică __construct(Serviciul de testare $serviciul_testului = NULL) {
$this->testService = $test_service;
}
funcția publică statică create(ContainerInterface $container) {
returnează static nou (
$container->has('custom_form1.form1_services') ? $container->get('custom_form1.form1_services'): NULL
);
}
În acest caz, clasa din modulul dumneavoastră ar trebui să fie pregătită să nu primească nicio instanță de clasă. Alternativ, modulul dumneavoastră ar putea implementa o versiune simplificată a serviciului, care implementează aceeași interfață și să folosească cod similar cu următorul.
funcția publică __construct(TestServiceInterface $test_service = NULL) {
$this->testService = $test_service;
}
funcția publică statică create(ContainerInterface $container) {
returnează static nou (
$container->has('custom_form1.form1_services') ? $container->get('custom_form1.form1_services'): $container->get('mymodule.form1_services')
);
}
Aceasta presupuneTestService
implementează o interfață care poate fi implementată din serviciul simplificat. (De asemenea, presupune că este posibil să se implementeze un serviciu simplificat.)