Laravel 实现 Facades 功能

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

Laravel 实现 Facades 功能使用过Laravel的同学都知道Facades 的强大,下面就让我们一起创建一个Facades 实例。如有不正确的地方,还请不吝赐教。

1. 实现Laravel的自动加载功能

首先建立目录app/lib/Myapp,然后添加目录到composer.json中

1 "autoload": { 2 "psr-0":{3 "Myapp":"app/lib"4 }5 }

2. 实现功能类

实现能能类 app/lib/Myapp/Test.php

1 <?php 2 /** 3 * @author brudeke 4 */ 5 namespace Myapp; 6 class Test{ 7 public function do(){ 8 echo 'this is a class'; 9 }10 }

3. 实现ServicePRovider

实现app/lib/Myapp/TestServiceProvider.php ,该类主要是将功能类添加到Ioc容器:

<?php/** * @author brudeke */namespace Myapp;use Illuminate\Support\ServiceProvider;class TestServiceProvider extends ServiceProvider{ public function register() { $this->app['test'] = $this->app->share( function ($app) { return new \Myapp\Test(); }); }}

4. 实现Facade 实例

实现app/lib/Myapp/Facades/TestFacades.php, 该类的主要美化,实现成员函数类似静态方法的调用形式

1 <?php 2 /** 3 * @author brudeke 4 */ 5 namespace Myapp\Facades; 6 7 use Illuminate\Support\Facades\Facade; 8 9 class TestFacades extends Facade{10 protected static function getFacadeaccessor()11 {12 return 'test';13 }14 }

5. 加载ServiceProvider

在app/config/app.php中的providers中添加如下配置:

1 'providers' => array( 2 'Myapp\TestServiceProvider'3 ),

在app/config/app.php中的aliases中添加别名:

1 'aliases' => array(2 'TestClass' => 'Myapp\Facades\TestFacades',3 ),

接下来就可以在项目中以TestClass::do()的形式使用该功能类了。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航