Laravel--Facades门面

来源:互联网 发布:教育行业网络推广方案 编辑:程序博客网 时间:2024/05/17 02:36

使用Laravel框架必不可少的会用到它很多强大的门面类(Facades),门面提供了一个“静态”接口到服务容器中绑定的类

我们首先创建一个需要绑定到服务容器的Test类:

<?phpnamespace App\Facades;class Test{    public function doSomething()    {        echo 'This is TestClass\'s method doSomething';    }}

然后创建一个静态指向Test类的门面类TestClass:

<?phpnamespace App\Facades;use Illuminate\Support\Facades\Facade;class TestClass extends Facade{    protected static function getFacadeAccessor()    {        return 'test';    }}

接下来我们要在服务提供者中绑定Test类到服务容器,修改TestServiceProvider类(代码修改自上一节服务提供者)如下:

<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;use App\Services\TestService;use App\Facades\Test;class TestServiceProvider extends ServiceProvider{    /**     * Bootstrap the application services.     *     * @return void     */    public function boot()    {    }    /**     * Register the application services.     *     * @return void     */    public function register()    {        $this->app->singleton('test',function(){            //return new TestService();            return new Test;        });        $this->app->bind('App\Contracts\TestContract',function(){            return new TestService();        });    }}

再然后需要到配置文件config/app.php中注册门面类别名:

'aliases' => [    ...//其他门面类别名映射    'TestClass' => App\Facades\TestClass::class,],

最后修改TestController代码如下:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;use App;use TestClass;use App\Contracts\TestContract;class TestController extends Controller{    public function __construct(TestContract $test){        $this->test = $test;    }    /**     * Display a listing of the resource.     *     * @return Response     */    public function index()    {        // $test = App::make('test');        // $test->callMe('TestController');        //$this->test->callMe('TestController');       TestClass::doSomething();    }    ...//其他方法}

注意:不要忘了在调用门面类TestClass的文件顶部使用use TestClass;引入TestClass,否则将不能正确调用。

好了,我们可以去浏览器中测试了,访问http://selfstudy.com/test,页面将会输出:

This is TestClass's method doSomething
0 0
原创粉丝点击