ใน Drupal คลาสสำหรับบริการที่กำหนดในไฟล์ .services.yml ของโมดูลไม่จำเป็นต้องใช้ สร้าง (ContainerInterface $container)
. ไม่มีการร้องขอให้ใช้อินเทอร์เฟซ PHP เฉพาะ
ดูหนึ่งในบริการหลักที่ Drupal ใช้ เช่น path_alias.manager บริการ.
path_alias.manager:
คลาส: Drupal\path_alias\AliasManager
ข้อโต้แย้ง:
- '@path_alias.repository'
- '@path_alias.ไวท์ลิสต์'
- '@language_manager'
- '@cache.data'
เดอะ ผู้จัดการนามแฝง
คลาสที่ใช้บริการนั้นไม่ได้ใช้งานใด ๆ สร้าง()
กระบวนการ; มันเพียงแค่ใช้ ตัวสร้างด้วยพารามิเตอร์ที่กำหนดไว้ในลำดับเดียวกัน อาร์กิวเมนต์บริการจะแสดงรายการ
ฟังก์ชันสาธารณะ __construct($alias_repository, AliasWhitelistInterface $รายการที่อนุญาต, LanguageManagerInterface $language_manager, CacheBackendInterface $cache) {
$this->pathAliasRepository = $alias_repository;
$this->languageManager = $language_manager;
$this->รายการที่อนุญาต = $รายการที่อนุญาต;
$this->cache = $แคช;
}
คลาสที่ใช้ สร้าง (ContainerInterface $container)
และการดำเนินการใด อินเตอร์เฟสคอนเทนเนอร์อินเจคชั่น
ตัวอย่างเช่น ครอนฟอร์ม
ชั้นไม่กลับปิดจาก สร้าง (ContainerInterface $container)
; พวกเขากลับคืนตัวอย่างของตัวเองเท่านั้น ดู CronForm::create()
.
สร้างฟังก์ชันคงที่สาธารณะ (ContainerInterface $container) {
ส่งคืนค่าคงที่ใหม่ ($container->get('config.factory'),
$container->get('สถานะ'),
$container->get('cron'),
$container->get('date.formatter'),
$container->get('module_handler')
);
}
หากคุณต้องการใช้บริการโรงงานใน Drupal คุณควรใช้ cache_factory บริการเป็นตัวอย่างในการเขียนโค้ดของคุณ
cache_factory:
คลาส: Drupal\Core\Cache\CacheFactory
ข้อโต้แย้ง:
- '@การตั้งค่า'
- '%cache_default_bin_backends%'
โทร:
- [setContainer, ['@service_container']]
บริการที่ใช้บริการนั้นเป็นโรงงาน เช่น cache.render บริการ.
cache.render:
คลาส: Drupal\Core\Cache\CacheBackendInterface
แท็ก:
- { ชื่อ: cache.bin }
โรงงาน:
- '@cache_factory'
- รับ
ข้อโต้แย้ง:
- เรนเดอร์
เดอะ โรงงาน คีย์กำหนดว่าบริการใดเป็นบริการจากโรงงานและวิธีการใดที่เรียกใช้สำหรับบริการโรงงานนั้น เดอะ ข้อโต้แย้ง คีย์กำหนดอาร์กิวเมนต์ที่ส่งไปยังเมธอดนั้น ในกรณีนี้ เป็นการบอก Drupal ให้สร้างอินสแตนซ์ของ cache.render บริการโดยยกตัวอย่างของ cache_factory บริการและการโทร รับ ('แสดงผล')
บนวัตถุนั้น