[Laravel5.2文档]架构--门面(Facades)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[Laravel5.2文档]架构--门面(Facades),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4849字,纯文字阅读大概需要7分钟。
内容图文
1、简介
门面为应用的服务容器中的绑定类提供了一个“静态”接口。Laravel内置了很多门面,你可能在不知道的情况下正在使用它们。Laravel 的门面作为服务容器中的底层类的“静态代理”,相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活的、简明且富有表现力的语法。
2、使用门面
在 Laravel 应用的上下文中,门面就是一个提供访问容器中对象的类。该机制原理由 Facade类实现,Laravel 自带的门面,以及创建的自定义门面,都会继承自 Illuminate\Support\Facades\Facade基类。
门面类只需要实现一个方法: getFacadeAccessor。正是 getFacadeAccessor方法定义了从容器中解析什么,然后 Facade基类使用魔术方法 __callStatic()从你的门面中调用解析对象。
下面的例子中,我们将会调用 Laravel 的缓存系统,浏览代码后,也许你会觉得我们调用了 Cache的静态方法 get:
<?phpnamespace App\Http\Controllers;use Cache;use App\Http\Controllers\Controller;class UserController extends Controller{ /** * 为指定用户显示属性 * * @param int $id * @return Response */ public function showProfile($id) { $user = Cache::get('user:'.$id); return view('profile', ['user' => $user]); }}
注意我们在顶部位置引入了 Cache门面。该门面作为代理访问底层 Illuminate\Contracts\Cache\Factory接口的实现。我们对门面的所有调用都会被传递给 Laravel 缓存服务的底层实例。
如果我们查看 Illuminate\Support\Facades\Cache类的源码,将会发现其中并没有静态方法 get:
class Cache extends Facade{ /** * 获取组件注册名称 * * @return string */ protected static function getFacadeAccessor() { return 'cache'; }}
Cache门面继承 Facade基类并定义了 getFacadeAccessor方法,该方法的工作就是返回服务容器绑定类的别名,当用户引用 Cache类的任何静态方法时,Laravel 从服务容器中解析 cache绑定,然后在解析出的对象上调用所有请求方法(本例中是 get)。
3、门面类列表
下面列出了每个门面及其对应的底层类,这对深入给定根门面的 API文档而言是个很有用的工具。服务容器绑定键也被包含进来:
门面 | 类 | 服务容器绑定别名 |
---|---|---|
App | Illuminate\Foundation\Application | app |
Artisan | Illuminate\Console\Application | artisan |
Auth | Illuminate\Auth\AuthManager | auth |
Auth (Instance) | Illuminate\Auth\Guard | |
Blade | Illuminate\View\Compilers\BladeCompiler | blade.compiler |
Bus | Illuminate\Contracts\Bus\Dispatcher | |
Cache | Illuminate\Cache\Repository | cache |
Config | Illuminate\Config\Repository | config |
Cookie | Illuminate\Cookie\CookieJar | cookie |
Crypt | Illuminate\Encryption\Encrypter | encrypter |
DB | Illuminate\Database\DatabaseManager | db |
DB (Instance) | Illuminate\Database\Connection | |
Event | Illuminate\Events\Dispatcher | events |
File | Illuminate\Filesystem\Filesystem | files |
Hash | Illuminate\Contracts\Hashing\Hasher | hash |
Input | Illuminate\Http\Request | request |
Lang | Illuminate\Translation\Translator | translator |
Log | Illuminate\Log\Writer | log |
Illuminate\Mail\Mailer | mailer | |
Password | Illuminate\Auth\Passwords\PasswordBroker | auth.password |
Queue | Illuminate\Queue\QueueManager | queue |
Queue (Instance) | Illuminate\Queue\QueueInterface | |
Queue (Base Class) | Illuminate\Queue\Queue | |
Redirect | Illuminate\Routing\Redirector | redirect |
Redis | Illuminate\Redis\Database | redis |
Request | Illuminate\Http\Request | request |
Response | Illuminate\Contracts\Routing\ResponseFactory | |
Route | Illuminate\Routing\Router | router |
Schema | Illuminate\Database\Schema\Blueprint | |
Session | Illuminate\Session\SessionManager | session |
Session (Instance) | Illuminate\Session\Store | |
Storage | Illuminate\Contracts\Filesystem\Factory | filesystem |
URL | Illuminate\Routing\UrlGenerator | url |
Validator | Illuminate\Validation\Factory | validator |
Validator (Instance) | Illuminate\Validation\Validator | |
View | Illuminate\View\Factory | view |
View (Instance) | Illuminate\View\View |
内容总结
以上是互联网集市为您收集整理的[Laravel5.2文档]架构--门面(Facades)全部内容,希望文章能够帮你解决[Laravel5.2文档]架构--门面(Facades)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。