程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Laravel 實現 Facades 功能,laravelfacades

Laravel 實現 Facades 功能,laravelfacades

編輯:關於PHP編程

Laravel 實現 Facades 功能,laravelfacades


  使用過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()的形式使用該功能類了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved