#上文讲述了laravel中怎么用容器依赖注入类的示例。其实在服务提供者上面在封装一层静态调用,这就是门面。静态调用门面,返回了容器中注册的别名和实例。
#下面是测试的示例
#先创建要操作的类
<?php /** * Created by PhpStorm. * User: xujun * Date: 2018/3/10 * Time: 15:38 */ namespace App\Http\Logic; class DirLogic { public function createDir(){ echo '创建目录'; } }
#然后创建服务提供者
php artisan make:provider MDirProvider
#然后在服务提供者中静态绑定到容器
public function register() { // $this->app->singleton(DirLogic::class, function ($app) { return new DirLogic(); }); }
#然后创建门面在app/下创建目录Facades
<?php /** * Created by PhpStorm. * User: xujun * Date: 2018/3/10 * Time: 15:40 */ namespace App\Facades; use App\Http\Logic\DirLogic; use Illuminate\Support\Facades\Facade; class DirFacades extends Facade { protected static function getFacadeAccessor() { return DirLogic::class;//容器中的真实映射名 } }
#然后修改配置文件
在服务提供者中添加 App\Providers\MDirProvider::class, 在aliases数组中添加 'DirFacade'=>App\Facades\DirFacades::class,
#测试的控制器
namespace App\Http\Controllers; use Illuminate\Http\Request; use DirFacade; class UsersController extends Controller { public function index1(Request $requser){ DirFacade::createDir(); } }
#返回
创建目录
总结:门面其实是在提供一个静态类调用容器中的绑定对象作用。