ผู้ให้บริการและคอนเทนเนอร์บริการทำงานอย่างไรโดยใช้ laravel
เผยแพร่แล้ว: 2022-09-16Laravel บางครั้งอาจจัดการได้ยากมาก แม้แต่นักพัฒนาที่มีประสบการณ์ เนื่องจากฟังก์ชันหลักเข้าใจยาก แต่จริงๆ แล้ว การพัฒนาเว็บนั้นน่าสนใจ
หนึ่งในฟังก์ชันการทำงานคือผู้ให้บริการ ซึ่งฉันจะให้ภาพรวมโดยละเอียดในบล็อกนี้ ฉันจะอธิบายด้วยว่าคอนเทนเนอร์บริการทำงานอย่างไรใน laravel ในบล็อกนี้
สิ่งเหล่านี้ง่ายกว่าที่คุณคิด พูดไปแล้วก็เข้าเรื่องเลย
ผู้ให้บริการใน laravel คืออะไร?
ผู้ให้บริการในแอปพลิเคชัน Laravel ทำหน้าที่เป็นจุดหลักในการบูตแอปพลิเคชัน ด้วยเหตุนี้ ผู้ให้บริการจึงถูกใช้เพื่อฉีดบริการพื้นฐานของ laravel ลงในคอนเทนเนอร์บริการ เช่นเดียวกับบริการ คลาส และการพึ่งพาของแอปพลิเคชันของเราลงในคอนเทนเนอร์บริการ
ผู้ให้บริการสำหรับตัวอย่างนี้อาจพบได้ใน config/app.php เป็นอาร์เรย์ชื่อ "ผู้ให้บริการ" อ้างถึงภาพด้านล่าง:
สมมติว่าคุณต้องการใช้ผู้ให้บริการบุคคลที่สาม จากนั้นคุณต้องใช้ในการกำหนดค่าอาร์เรย์ผู้ให้บริการ
คุณสามารถดูผู้ให้บริการบางรายที่เรียกใช้แอปพลิเคชันทั้งหมดได้อยู่แล้ว เช่น Auth ซึ่งจำเป็นสำหรับการตรวจสอบสิทธิ์สำหรับแอปพลิเคชัน
จะสร้างผู้ให้บริการใน laravel ได้อย่างไร?
หากต้องการใช้ผู้ให้บริการ คุณต้องสร้างผู้ให้บริการก่อน ด้วยเหตุนี้ เราจะตั้งผู้ให้บริการทันที คุณสามารถใช้คำสั่งด้านล่างเพื่อสร้างผู้ให้บริการที่คุณต้องการ
php ช่างฝีมือ make:provider MyServiceProvider
เมื่อคุณเรียกใช้คำสั่ง ผู้ให้บริการจะถูกสร้างขึ้นในแอปพลิเคชันของคุณ ซึ่งคุณสามารถใช้ได้
หลังจากนั้น เปิดแอปของคุณและไปที่โฟลเดอร์ผู้ให้บริการ ซึ่งคุณจะพบผู้ให้บริการของคุณ
ที่นี่คุณจะเห็นสองวิธี register() และ boot()
register() วิธีการ
สิ่งสำคัญคือต้องรู้ว่าวิธีการ register() ช่วยให้เรากำหนดการเชื่อมโยงไปยังคอนเทนเนอร์บริการของเราได้ ตัวอย่างเช่น ดูรหัสด้านล่าง:
$this->app เป็นตัวแปรส่วนกลางใน laravel ซึ่งสามารถเข้าถึงคลาส singleton ผ่านแอพได้
ซิงเกิลตันเป็นคุณลักษณะ เมื่อคุณใช้คุณลักษณะนี้ แสดงว่าคุณกำลังแจ้งให้แอปพลิเคชันทราบว่าคลาสใดก็ตามที่ส่งเป็นพารามิเตอร์ในแอปควรมีเพียงหนึ่งรายการซ้ำกัน (อินสแตนซ์) ตลอดทั้งแอปพลิเคชัน ซึ่งหมายความว่า MyClass จะได้รับการแก้ไขเพียงครั้งเดียวและจะมีเพียงอินสแตนซ์เดียว ซึ่งสามารถเข้าถึงได้โดยใช้ตัวแปร my_class
boot() วิธีการ
วิธีการ boot() ให้คุณเข้าถึงบริการทั้งหมดที่ลงทะเบียนไว้ก่อนหน้านี้โดยใช้วิธีการลงทะเบียน คุณจึงรวมบริการทั้งหมดไว้ในแอปพลิเคชันของคุณได้โดยใช้วิธีนี้
จะลงทะเบียนผู้ให้บริการได้อย่างไร?
เนื่องจากคุณได้สร้างผู้ให้บริการแล้ว คุณจะต้องลงทะเบียนในไฟล์การกำหนดค่าเพื่อดำเนินการให้เสร็จสิ้น คุณต้องลงทะเบียนที่นี่ในลักษณะที่แสดงในภาพด้านล่าง:

ผู้ให้บริการทั้งหมดจะโหลดก่อนทุกครั้งที่เรียกใช้แอปพลิเคชัน ผู้ให้บริการเป็นศูนย์กลางหลักสำหรับแอปพลิเคชัน Laravel และพร้อมให้ความช่วยเหลือคุณในการเรียกใช้แอปพลิเคชันที่สมบูรณ์ ดังที่ได้กล่าวไว้ก่อนหน้านี้ในบล็อกนี้
คอนเทนเนอร์บริการใน laravel คืออะไร
Service Container เป็นกลไกที่ทรงพลังที่ช่วยให้เราสามารถจัดเก็บการเชื่อมโยงทั้งหมดที่จำเป็นต่อการใช้งานแอปพลิเคชัน Laravel บนเซิร์ฟเวอร์เครื่องเดียว
ทุกอย่างในแอปพลิเคชันอาจถูกผูกไว้ด้วยกันด้วยความช่วยเหลือของคอนเทนเนอร์บริการ
จะใช้บริการคอนเทนเนอร์ใน laravel ได้อย่างไร?
พิจารณาสถานการณ์สมมติต่อไปนี้: เรามีคลาสชื่อ MathService ที่รับผิดชอบการดำเนินการพื้นฐานบางอย่าง เช่น การบวก การคูณ และอื่นๆ รหัสสำหรับคลาสนี้มีให้ด้านล่าง
ดังที่คุณเห็นด้านบน มีสองวิธีในการคำนวณผลรวมของอาร์เรย์ตัวเลขโดยใช้ฟังก์ชันผลรวมอาร์เรย์และการคูณตัวเลขทั้งหมดที่มีให้เป็นอาร์เรย์โดยใช้ฟังก์ชันผลิตภัณฑ์อาร์เรย์
ฟังก์ชันผลรวมอาร์เรย์จะคำนวณผลรวมของอาร์เรย์ตัวเลขโดยใช้ฟังก์ชันผลรวมอาร์เรย์ ในขณะที่ฟังก์ชันผลิตภัณฑ์อาร์เรย์จะคูณตัวเลขทั้งหมดที่ระบุเป็นอาร์เรย์
ในการใช้ผู้ให้บริการ เราต้องผูกบริการกับคอนเทนเนอร์บริการก่อน
อย่างไรก็ตาม การทำเช่นนี้ เรากำลังแนะนำให้ Laravel เก็บคอนเทนเนอร์ MathService ไว้ในคอนเทนเนอร์ที่มีชื่อ MathService และส่งคืนเมื่อใดก็ตามที่เราต้องการอินสแตนซ์ของคลาส นี่เป็นการรวมคลาสแบบครั้งเดียว และอาจใช้เพื่อรับอินสแตนซ์จำนวนเท่าใดก็ได้จากโปรแกรมของเรา
ตามที่ระบุไว้ก่อนหน้านี้ คอนเทนเนอร์บริการและผู้ให้บริการเป็นส่วนประกอบที่สำคัญของทุกแอปพลิเคชัน Laravel ตามที่ระบุไว้ก่อนหน้านี้ เราอาจออกแบบผู้ให้บริการเฉพาะของเราเอง หรือเราสามารถรวมผู้ให้บริการบุคคลที่สามเข้ากับแอปพลิเคชันของเรา
ตัวอย่างเช่น หากคุณต้องการใช้โซเชียลเน็ตเวิร์กใน Laravel คุณสามารถคัดลอกและวางลงในไฟล์ผู้ให้บริการแอปและใช้งานได้ทุกที่ในแอปพลิเคชันของคุณ
สรุปว่า
เมื่อกำหนดค่าแอปพลิเคชันของคุณ ผู้ให้บริการจะถูกใช้ นอกจากการเชื่อมโยงคอนเทนเนอร์บริการแล้ว องค์ประกอบหลักอื่นๆ เช่น เส้นทาง มิดเดิลแวร์ และผู้ฟังเหตุการณ์ยังได้รับการลงทะเบียนในส่วนนี้ของไฟล์การกำหนดค่าด้วย
ผู้ให้บริการจะดำเนินการก่อนที่จะดำเนินการตามคำขอ ตรวจสอบให้แน่ใจว่าทุกสิ่งที่คุณต้องการอยู่ในสถานที่และตั้งค่าก่อนที่คำขอจะถูกจัดการโดยระบบ การดำเนินการของผู้ให้บริการบางรายเกิดขึ้นเป็นประจำ ในขณะที่ผู้ให้บริการรายอื่นจะดำเนินการเมื่อจำเป็นเท่านั้น ("ผู้ให้บริการล่าช้า")
เมื่อคุณใช้คอนเทนเนอร์บริการ คุณสามารถใช้สำหรับการฉีดการพึ่งพา (เช่น การฉีดพารามิเตอร์ในคลาสตัวควบคุมของคุณ) เช่นเดียวกับคลาสการรวมและการแก้ปัญหา (เช่น คลาสใดที่จะสร้างอินสแตนซ์สำหรับสัญญาที่กำหนด)
การพัฒนาเว็บอาจเป็นกระบวนการที่ยาก นั่นคือเหตุผลที่ webdew มีทีมนักพัฒนาเว็บที่มีทักษะเพื่อช่วยในการสร้างเว็บไซต์และแอปพลิเคชัน และทำให้สิ่งต่างๆ ง่ายขึ้นสำหรับคุณ
ต้องการผู้เชี่ยวชาญด้านการออกแบบเว็บและการพัฒนาเว็บหรือไม่? ติดต่อกับพวกเรา!
บรรณาธิการ: อมฤตา