Laravel - สัญญา

สัญญา Laravel คือชุดของอินเทอร์เฟซที่มีฟังก์ชันต่างๆและบริการหลักที่จัดเตรียมโดยเฟรมเวิร์ก

ตัวอย่างเช่น, Illuminate\Contracts\Queue\Queue สัญญาใช้วิธีการที่จำเป็นสำหรับการจัดคิวงานและ Illuminate\Contracts\Mail\Mailer ใช้วิธีการส่งอีเมล

ทุกสัญญาที่กำหนดรวมถึงการปฏิบัติตามกรอบที่สอดคล้องกัน สัญญา Laravel ทั้งหมดมีอยู่ในที่เก็บ GitHub ตามที่ระบุไว้ด้านล่าง -

https://github.com/illuminate/contracts

ที่เก็บนี้มีสัญญาที่หลากหลายใน Laravel framework ซึ่งสามารถดาวน์โหลดและใช้งานได้ตามนั้น

จุดสำคัญ

ในขณะที่ทำงานกับสัญญา Laravel โปรดสังเกตประเด็นสำคัญดังต่อไปนี้ -

  • จำเป็นต้องกำหนด facades ในตัวสร้างของคลาส

  • สัญญามีการกำหนดไว้อย่างชัดเจนในชั้นเรียนและคุณไม่จำเป็นต้องกำหนดสัญญาในผู้ก่อสร้าง

ตัวอย่าง

พิจารณาสัญญาที่ใช้สำหรับการอนุญาตใน Laravel ซึ่งระบุไว้ด้านล่าง -

<?php

namespace Illuminate\Contracts\Auth\Access;

interface Authorizable{
   /**
      * Determine if the entity has a given ability.
      *
      * @param string $ability
      * @param array|mixed $arguments
      * @return bool
   */
   public function can($ability, $arguments = []);
}

สัญญาใช้ฟังก์ชันซึ่งรวมถึงไฟล์ parameter ชื่อ ability และ arguments ซึ่งใช้การระบุผู้ใช้ในรูปแบบของไฟล์ array.

คุณจะต้องกำหนดสัญญาตามที่แสดงในไวยากรณ์ด้านล่าง -

interface <contract-name>

สัญญาใช้เหมือนอาคารสำหรับสร้างแอปพลิเคชัน Laravel ที่มีประสิทธิภาพและผ่านการทดสอบมาเป็นอย่างดี มีหลากหลายpractical differences ด้วยการใช้สัญญาและอาคาร

รหัสต่อไปนี้แสดงโดยใช้สัญญาสำหรับการแคชที่เก็บ -

<?php

namespace App\Orders;
use Illuminate\Contracts\Cache\Repository as Cache;

class Repository{
   /**
      * The cache instance.
   */
   
   protected $cache;
   
   /**
      * Create a new repository instance.
      *
      * @param Cache $cache
      * @return void
   */
   
   public function __construct(Cache $cache) {
      $this->cache = $cache;
   }
}

สัญญาไม่มีการใช้งานและการอ้างอิงใหม่ เป็นเรื่องง่ายที่จะเขียนการใช้งานทางเลือกอื่นของสัญญาที่ระบุดังนั้นผู้ใช้สามารถแทนที่การใช้แคชโดยไม่ต้องแก้ไขฐานรหัสใด ๆ