• 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 IlluminateSupportServiceProvider;
    
    class TestServiceProvider extends ServiceProvider{
    
        public function register()  {
            $this->app['test'] = $this->app->share(
                function ($app) {
                    return new MyappTest();
            });
        }
    }

      4. 实现Facade 实例

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

     1 <?php
     2 /**
     3  * @author brudeke
     4  */
     5 namespace MyappFacades;
     6 
     7 use IlluminateSupportFacadesFacade;
     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   'MyappTestServiceProvider'
    3 ),

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

    1 'aliases' => array(
    2     'TestClass'            =>  'MyappFacadesTestFacades',
    3 ),

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

  • 相关阅读:
    webpack学习1-打包
    Cordova开发-2 自定义插件
    Vue项目开发1-项目的创建
    Cordova开发-2 具体插件的使用
    Cordova开发-1 项目的创建
    Mybatis的使用
    XAMPP设置上的问题
    七款Debug工具推荐:iOS
    sqlite内置函数
    CATransition常用动画及type
  • 原文地址:https://www.cnblogs.com/brudeke/p/4213123.html
Copyright © 2020-2023  润新知