码迷,mamicode.com
首页 > 其他好文 > 详细

Laravel 实现 Facades 功能

时间:2015-01-18 10:30:57      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

  使用过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()的形式使用该功能类了。

Laravel 实现 Facades 功能

标签:

原文地址:http://www.cnblogs.com/brudeke/p/4213123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!