Home > PHP Framework > Laravel > What is the usage of laravel contract

What is the usage of laravel contract

WBOY
Release: 2022-02-24 15:06:15
Original
2464 people have browsed it

In laravel, contracts refer to a series of interfaces that define core services provided by the framework to facilitate the development of third-party interface developers. The implementation of all contracts constitutes all core tasks of the framework, and can Understand the role of a given function through contracts.

What is the usage of laravel contract

#The operating environment of this article: Windows 10 system, Laravel version 6, Dell G3 computer.

What is the usage of laravel contract

What is the contract

The contract in Laravel refers to a series of interfaces provided by the framework that define core services, such as cache, queue, log The interface, the contract is the interface

Why do we need to define the interface

The purpose of defining the interface is decoupling

When we depend on the cache instance, laravel implements it as follows:

For example: We choose to use memcached cache driver

use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Cache $cache)
    {
        $this->cache = $cache;
    }
}
Copy after login

Do not define the interface

If we do not define the interface we must write like this

use Memcached;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Memcached $cache)
    {
        $this->cache = $cache;
    }
}
Copy after login

This way when we need to switch the cache driver to redis When , we must go to the controller and change the type convention of dependency injection to redis, because the implementation of redis is not necessarily exactly the same as Memcached, which means that the Memcached cache is tightly coupled with laravel

What is Loose coupling

What is loose coupling? When the system is upgraded and an implementation needs to be modified (such as upgrading from Memcached to Redis), the code base can not be modified, and only the configuration needs to be modified. It is considered loosely coupled when the upgrade can be completed!

One contract has two, or multiple implementations

Personally, since the contract is finalized, the corresponding implementation should be two, or more implementations, or there will be in the near future There are two or more implementations, and the contract is here to stipulate so many implementations. If there is only one implementation, it feels like the contract is useless!

Summary

The definition contract is an agreement for the implementation of a set of functions to facilitate the development of third-party interface developers

The contract is more like a A directory index of the framework. The implementation of all contracts constitutes all the core services of the framework, and you can quickly understand what this set of functions does through the contract.

For cache classes, the cache contract is to stipulate Various cache implementations (Memcached, Redis, file cache) need to implement functions

[Related recommendations: laravel video tutorial]

The above is the detailed content of What is the usage of laravel contract. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template