लारवेल - संविदा
लारवेल कॉन्ट्रैक्ट फ्रेमवर्क द्वारा प्रदान की गई विभिन्न कार्यात्मकताओं और कोर सेवाओं के साथ इंटरफेस का एक सेट है।
उदाहरण के लिए, Illuminate\Contracts\Queue\Queue अनुबंध एक विधि का उपयोग करता है जिसकी आवश्यकता नौकरियों की कतार के लिए होती है और Illuminate\Contracts\Mail\Mailer ईमेल भेजने के लिए विधि का उपयोग करता है।
परिभाषित प्रत्येक अनुबंध में फ्रेमवर्क का संगत कार्यान्वयन शामिल है। सभी लारवेल अनुबंध GitHub रिपॉजिटरी में उपलब्ध हैं जैसा कि नीचे बताया गया है -
https://github.com/illuminate/contracts
यह रिपॉजिटरी लारवेल फ्रेमवर्क में उपलब्ध विभिन्न प्रकार के अनुबंध प्रदान करता है जिन्हें डाउनलोड किया जा सकता है और तदनुसार उपयोग किया जा सकता है।
महत्वपूर्ण बिंदु
लारवेल कॉन्ट्रैक्ट के साथ काम करते समय कृपया निम्नलिखित महत्वपूर्ण बिंदुओं पर ध्यान दें -
एक कक्षा के निर्माता में facades को परिभाषित करना अनिवार्य है।
कॉन्ट्रैक्ट को स्पष्ट रूप से कक्षाओं में परिभाषित किया गया है और आपको कंस्ट्रक्टरों में अनुबंध को परिभाषित करने की आवश्यकता नहीं है।
उदाहरण
लारवेल में प्राधिकरण के लिए इस्तेमाल अनुबंध पर विचार करें जो नीचे उल्लिखित है -
<?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>
अनुबंधों का उपयोग मजबूत, अच्छी तरह से परीक्षण किए गए लारवेल अनुप्रयोगों को बनाने के लिए facades की तरह किया जाता है। विभिन्न हैंpractical differences अनुबंध और facades के उपयोग के साथ।
निम्नलिखित कोड एक भंडार को कैशिंग के लिए अनुबंध का उपयोग करके दिखाता है -
<?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;
}
}
अनुबंध में कोई कार्यान्वयन और नई निर्भरताएं नहीं हैं; एक निर्दिष्ट अनुबंध के वैकल्पिक कार्यान्वयन को लिखना आसान है, इस प्रकार एक उपयोगकर्ता किसी भी कोड आधार को संशोधित किए बिना कैश कार्यान्वयन को बदल सकता है।