คำถามไม่ได้ทำให้ชัดเจน แต่เนื่องจากคำถามกล่าวถึงการได้รับข้อผิดพลาดเมื่อไม่ได้ติดตั้งโมดูลอื่น ฉันจึงถือว่า เงื่อนไข เป็น เมื่อติดตั้งโมดูลแล้ว. ในกรณีนั้น โมดูลสามารถใช้โค้ดต่อไปนี้ได้
ฟังก์ชั่นสาธารณะ __construct (TestService $test_service = NULL) {
$this->testService = $test_service;
}
สร้างฟังก์ชันคงที่สาธารณะ (ContainerInterface $container) {
ส่งคืนค่าคงที่ใหม่ (
$container->has('custom_form1.form1_services') ? $container->get('custom_form1.form1_services') : NULL
);
}
ในกรณีนี้ คลาสในโมดูลของคุณควรพร้อมที่จะไม่ได้รับอินสแตนซ์ของคลาสใดๆ อีกทางหนึ่ง โมดูลของคุณสามารถใช้บริการเวอร์ชันที่เรียบง่าย ซึ่งใช้อินเทอร์เฟซเดียวกัน และใช้โค้ดที่คล้ายกับสิ่งต่อไปนี้
ฟังก์ชั่นสาธารณะ __construct (TestServiceInterface $test_service = NULL) {
$this->testService = $test_service;
}
สร้างฟังก์ชันคงที่สาธารณะ (ContainerInterface $container) {
ส่งคืนค่าคงที่ใหม่ (
$container->has('custom_form1.form1_services') ? $container->get('custom_form1.form1_services') : $container->get('mymodule.form1_services')
);
}
สิ่งนี้ถือว่าบริการทดสอบ
ใช้อินเทอร์เฟซที่สามารถนำไปใช้ได้จากบริการแบบง่าย (นอกจากนี้ยังถือว่าเป็นไปได้ที่จะใช้บริการที่เรียบง่าย)