laravel 服务提供者 facade初使用及理解
来源:互联网 发布:易编程模块 编辑:程序博客网 时间:2024/05/29 13:21
使用服务提供者注册服务进行依赖注入后可以直接Class::method()调用否则得自己new一个实例
<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;class MyViewComposer extends ServiceProvider{ /** * Bootstrap the application services. * * @return void */ public function boot() { // } /** * Register the application services. * * @return void */ public function register() { $this->app->singleton('myviewcomposera',function(){ //return new TestService(); return new \App\Http\ViewComposers\MyViewComposer; }); $this->app->bind('App\Contracts\ComposerContract', function() //两种绑定方式 { return new \App\Http\ViewComposers\MyViewComposer; }); }}facade其实就是创建一个静态类
<?phpnamespace App\Facades;use Illuminate\Support\Facades\Facade;class MyViewComposer extends Facade { protected static function getFacadeAccessor() { return 'myviewcomposera'; }}config文件夹app.php中注册别名
'MyViewComposer' => App\Facades\MyViewComposer::class,创建契约接口方便后面依赖注入
<?phpnamespace App\Contracts;use Illuminate\Contracts\View\View;interface ComposerContract{ public function compose(View $view); public function setnavbar($data); }创建类
<?php namespace App\Http\ViewComposers;use Illuminate\Contracts\View\View;use App\Contracts\ComposerContract;use Cache;use Carbon\Carbon;class MyViewComposer implements ComposerContract{ public function compose(View $view) { $view->with('sitename',Cache::get('navbar',[1,0,0,0])); } public function setnavbar($data){ Cache::put('navbar', $data, Carbon::now()->addSeconds(300)); }}
使用
<?phpnamespace App\Http\Controllers\Admin;use Illuminate\Http\Request;use App\Http\Controllers\Controller;use App\Role;use App\Permission;use App\Contracts\ComposerContract;//use App\Facades\MyViewComposer; //使用全名use MyViewComposer;//使用别名class RoleController extends Controller{//自己进行依赖注入 public function __construct(ComposerContract $test){ //需要取消使用全名注释 $this->composer = $test; } public function welcome() { $users=Role::get(); foreach ($users as $user) { $user->permissions; } // $this->composer->setnavbar([0,0,0,[1,0,0]]); MyViewComposer::setnavbar([0,0,0,[1,0,0]]); //Cache::put('navbar', [0,0,1,0], Carbon::now()->addSeconds(300)); return view('admin/role',['roledata'=>$users,'permissions'=>Permission::all()]); }}
facade就相当于帮你依赖注入了
阅读全文
0 0
- laravel 服务提供者 facade初使用及理解
- laravel 服务提供者的理解
- laravel关于服务提供者的再次理解
- Laravel服务提供者
- laravel-服务提供者
- Laravel核心理解(一)--服务提供者(ServiceProvider)
- laravel创建服务提供者实例
- 简单理解laravel框架中的服务容器,服务提供者以及怎样调用服务
- Laravel 中的服务容器、服务、服务提供者
- 关于laravel 自动加载和依赖注入、服务容器、服务提供者的理解--1
- 对 laravel 中服务提供者(Provider)和 门面(Facades) 的理解
- laravel:服务提供者的实际应用
- JDBC理解-服务提供者框架
- Laravel 5 系统架构:服务提供者、服务容器、Contracts、Facades
- laravel 服务容器service container和服务提供者service provider
- laravel服务提供者与服务容器的因果关系
- [李景山php]每天laravel[032]-laravel 基础知识 --- Contract 及 Facade
- 详解Laravel服务提供者 IOC(控制反转)、依赖注入
- java笔记(二):多态
- ACM2017四川省赛 E Longest Increasing Subsequence
- 深入理解express框架
- JQuery easyUI datagrid 使用sorter进行前端排序
- 排序算法之鸡尾酒排序
- laravel 服务提供者 facade初使用及理解
- linux文件系统
- Visual Studio团队资源管理器 Git 源码管理工具简单入门
- express搭建nodeJS中间层(一)(二)
- Mysql数据库经常无法重启的原因
- express搭建nodeJS中间层(三)
- js的第一课
- 提取指定行之间的内容再正则过滤掉内容
- 关于编译器提示a declaration cannot have a label的解决方法