Problèmes avec la "façade" et le "contrat" ​​de Laravel
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:47:41
0
3
492

Problèmes avec la « façade » et le « contrat » de Laravel :
Il y a deux questions :
1 Quels sont les scénarios d'utilisation de ces deux choses ?
2. Je ne comprends pas pourquoi ces deux mots sont utilisés. J'ai l'impression qu'ils sont complètement incohérents. Ces deux mots ont-ils quelque chose à voir avec leurs fonctions ?

过去多啦不再A梦
过去多啦不再A梦

répondre à tous(3)
给我你的怀抱

En termes simples :
Apparence (la Façade dont vous parlez) est l'implémentation du Mode Apparence. 外观(你说的门面)是外观模式的实现。
协议(你说的契约)是工厂方法模式抽象工厂模式Le Protocole (le Contrat dont vous parlez) est l'implémentation du Factory Method Pattern ou du Abstract Factory Pattern.

Lisez les modèles de conception et vous gagnerez beaucoup.

小葫芦

Vous devez d'abord apprendre à utiliser les conteneurs d'injection de dépendances.

Laravel's Facade est un raccourci pour appeler des services depuis le conteneur.

Lorsqu'il n'y a pas de Façade, vous devrez peut-être vous procurer un service/objet comme celui-ci puis appeler :

$service = App::make('some_service');
$service->doSomething();

Parce que vous avez enregistré 'some_service' dans le conteneur, le conteneur peut créer une instance pour vous. 'some_service',所以容器能make一个实例给你。

Facade只是用静态方式简化了这个使用过程,底层用__callStatic

Facade simplifie simplement le processus d'utilisation de manière statique. La couche inférieure utilise __callStatic pour transmettre des fonctions et des paramètres à l'instance de service :

class SomeService extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'some_service'; // 这是容器里的键
    }
}

SomeService::doSomething(); // 底层和第一段代码是类似的
Contract est un ensemble d'interfaces fournies avec le framework, qui peuvent être implémentées via l'injection de dépendances.

public function index(SomeService $service) { // 等服务容器注入一个SomeService。
    $service->doSomething();
}
Facade et Contract ne sont que des manières différentes d'utiliser les conteneurs d'injection de dépendances. Pour utiliser Facade, vous accédez au conteneur pour l'obtenir vous-même (utilisez le conteneur comme localisateur de services), et pour utiliser Contract, vous attendez que le conteneur injecte des dépendances. . 🎜
曾经蜡笔没有小新

Facade, pour faire simple, consiste à donner un alias au service lié dans le conteneur de service, en utilisant la fonction class_alias
Par exemple, App correspond à la classe Container.

Un contrat, comme son nom l'indique, est une règle que les deux parties reconnaissent et respectent, et « interface » a également ces caractéristiques. L'affiche demandait qu'il devrait s'agir d'une « programmation orientée interface ». expliquez clairement. Je suis encore relativement inexpérimenté, l'affiche a besoin de plus de pratique et d'expérience, s'il vous plaît, pardonnez-moi...

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal