程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> Laravel中注冊Facades的步驟詳解

Laravel中注冊Facades的步驟詳解

編輯:PHP綜合

本文講述了Laravel中注冊Facades的步驟。分享給大家供大家參考,具體如下:

在Laravel中將類注冊為Fcade可以使用Ioc容器,每次使用這個類的時候只會初始化一次類,類似單例模式,而且可以像使用靜態方法調用類的方法,下面是在Laravel中注冊Facades的步驟。

1.在項目app目錄的Providers/AppServiceProvider.php中的register方法新增方法,代碼如下。

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
 $this->registerTestModel();
}
private function registerTestModel()
{
 $this->app->singleton('testmodel', function ($app) {
  $model = 'App\Models\Test';
  return new $model();
 });
 $this->app->alias('testmodel', 'App\Models\Test');
}

這裡把命名空間是App\Models的Test類注冊為單例模式,並且取個別名testmodel.這個Test類的文件位置app/Models/Test.php.

2.建立一個Facade類

在項目根目錄app\Facades目錄新增文件,如Test.php,代碼如下,目錄不存在可以新建一個。

<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Test extends Facade
{
 /**
  * Get the registered name of the component.
  *
  * @return string
  */
 protected static function getFacadeAccessor()
 {
  return 'testmodel';
 }
}

通過繼承Facade,重載getFacadeAccessor方法,返回之前綁定的單例模式的類的別名。

3.使用Facade

經過前面的步驟後,可以使用Test這個Facade了,如下示例是在控制器中使用Facade的方式。

<?php
namespace App\Http\Controllers;
use App\Facades\Test;
use Illuminate\Routing\Controller;
class TestController extends Controller
{
 public function __construct()
 {
  Test::show();
  Test::show();
 }
}

先看看這個原始類Test.php的內容:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
 protected $table = 'tt';
 public static $times = 0;
 public function __construct()
 {
  self::$times++;
  parent::__construct();
 }
 public function show()
 {
  echo self::$times . '<br>';
 }
}

經過注冊Facade後,調用show方法就是Test::show()的形式,並且類似單例模式不會多次實例化,調用也十分簡單。

PS:以上僅為注冊Facade的方法和步驟,實際項目中可能還需對Model層進行進一步的封裝。

轉自:小談博客 http://www.tantengvip.com/2016/01/laravel-facades-register/

更多關於Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基於Laravel框架的PHP程序設計有所幫助。

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