Контракты Laravel — это набор интерфейсов с различными функциями и основными услугами, предоставляемыми платформой.
Например, Illuminate \ Contracts \ Queue \ Queue contract использует метод, который необходим для очередей заданий, а Illuminate \ Contracts \ Mail \ Mailer использует метод для отправки электронных писем.
Каждый определенный контракт включает в себя соответствующую реализацию рамок. Все контракты Laravel доступны в репозитории GitHub, как указано ниже —
https://github.com/illuminate/contracts
Этот репозиторий предоставляет множество контрактов, доступных в среде Laravel, которые можно загрузить и использовать соответствующим образом.
Важные моменты
При работе с контрактами Laravel обратите внимание на следующие важные моменты:
-
Обязательно определять фасады в конструкторе класса.
-
Контракты явно определены в классах, и вам не нужно определять контракты в конструкторах.
Обязательно определять фасады в конструкторе класса.
Контракты явно определены в классах, и вам не нужно определять контракты в конструкторах.
пример
Рассмотрим контракт, используемый для авторизации в 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 = []); }
Контракт использует функцию can, которая включает в себя параметр с именем Способность и аргументы, которые используют идентификацию пользователя в форме массива .
Вы должны будете определить контракт, как показано в синтаксисе ниже —
interface <contract-name>
Контракты используются как фасады для создания надежных, хорошо протестированных приложений Laravel. Существуют различные практические различия с использованием договоров и фасадов.
Следующий код показывает использование контракта для кэширования хранилища:
<?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; } }
Контракт не содержит реализации и новых зависимостей; Легко написать альтернативную реализацию указанного контракта, таким образом, пользователь может заменить реализацию кеша без изменения какой-либо базы кода.