Ce qui suit est une explication détaillée de Laravel Facade de la colonne du didacticiel Laravel . J'espère que cela aidera ceux qui en ont besoin !
Bonjour à tous, le contenu d'aujourd'hui concerne le principe d'implémentation du mécanisme Facade de Laravel.
Utilisation de la base de données :
$users = DB::connection('foo')->select(...);
Comme nous le savons tous, le conteneur IOC est la partie la plus importante du Cadre Laravel. Il fournit deux fonctions, IOC et conteneurs.
Cette fois, je ne vais pas expliquer l'implémentation spécifique du conteneur IOC. Il y aura un article l'expliquant en détail plus tard. Concernant les conteneurs IOC, les lecteurs n'ont qu'à retenir deux points :
<?php namespace facades; abstract class Facade { protected static $app; /** * Set the application instance. * * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public static function setFacadeApplication($app) { static::$app = $app; } /** * Get the registered name of the component. * * @return string * * @throws \RuntimeException */ protected static function getFacadeAccessor() { throw new RuntimeException('Facade does not implement getFacadeAccessor method.'); } /** * Get the root object behind the facade. * * @return mixed */ public static function getFacadeRoot() { return static::resolveFacadeInstance(static::getFacadeAccessor()); } /** * Resolve the facade root instance from the container. * * @param string|object $name * @return mixed */ protected static function resolveFacadeInstance($name) { return static::$app->instances[$name]; } public static function __callStatic($method, $args) { $instance = static::getFacadeRoot(); if (! $instance) { throw new RuntimeException('A facade root has not been set.'); } switch (count($args)) { case 0: return $instance->$method(); case 1: return $instance->$method($args[0]); case 2: return $instance->$method($args[0], $args[1]); case 3: return $instance->$method($args[0], $args[1], $args[2]); case 4: return $instance->$method($args[0], $args[1], $args[2], $args[3]); default: return call_user_func_array([$instance, $method], $args); } } }
Description du code :
TEST1 La logique spécifique :
<?php class Test1{ public function hello() { print("hello world"); }}
Classe TEST1 Façade :
<?php namespace facades;/** * Class Test1 * @package facades * * @method static setOverRecommendInfo [设置播放完毕时的回调函数] * @method static setHandlerPlayer [明确指定下一首时的执行类] */class Test1Facade extends Facade{ protected static function getFacadeAccessor() { return 'test1'; } }
Utilisation :
use facades\Test1Facade;Test1Facade::hello(); // 这是 Facade 调用
Explication :
return static::$app->instances[$name];
. Parmi eux, $name
est test1facadesTest1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!