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