使用過Laravel的同學(xué)都知道Facades 的強(qiáng)大,下面就讓我們一起創(chuàng)建一個(gè)Facades 實(shí)例。如有不正確的地方,還請(qǐng)不吝賜教。
1. 實(shí)現(xiàn)Laravel的自動(dòng)加載功能
首先建立目錄app/lib/Myapp,然后添加目錄到composer.json中
1 "autoload": { 2 "psr-0":{3 "Myapp":"app/lib"4 }5 }
2. 實(shí)現(xiàn)功能類
實(shí)現(xiàn)能能類 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. 實(shí)現(xiàn)ServicePRovider
實(shí)現(xiàn)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. 實(shí)現(xiàn)Facade 實(shí)例
實(shí)現(xiàn)app/lib/Myapp/Facades/TestFacades.php, 該類的主要美化,實(shí)現(xiàn)成員函數(shù)類似靜態(tài)方法的調(diào)用形式
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 ),
接下來就可以在項(xiàng)目中以TestClass::do()的形式使用該功能類了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注