facade php,如何在 Laravel 项目中创建自己的 Facade

37b56d3e91521ff149737578f0b5f0c7.png

通过这篇文章,我们可以学会如何定义自己的facade类,并且在我们的项目中使用它。

这里我想创建一个名称为SmartLogger的类,同时尝试使用它,下面让我们开始吧:

首先创建一个以SmartLogger命名的目录,并且在目录中创建如下php文件:

.

├── SmartLoggerFacade.php

└── SmartLogger.php

0 directories, 2 files

SmartLogger.php

namespace App\SmartLogger;

class SmartLogger {

public function log($text) {

$path = storage_path('logs');

$myfile = fopen("{$path}/SmartLog.txt", "a");

fwrite($myfile, $text);

fwrite($myfile, PHP_EOL);

fclose($myfile);

}

}

SmartLoggerFacade.php

namespace App\SmartLogger;

use Illuminate\Support\Facades\Facade;

class SmartLoggerFacade extends Facade

{

protected static function getFacadeAccessor()

{

return 'smartlogger';

}

}

创建 service provider

php artisan make:provider SmartLoggerServiceProvider

SmartLoggerServiceProvider.php

namespace App\Providers;

use App\SmartLogger\SmartLogger;

use Illuminate\Support\ServiceProvider;

class SmartLoggerServiceProvider extends ServiceProvider

{

/**

* Register services.

*

* @return void

*/

public function register()

{

$this->app->bind('smartlogger',function(){

return new SmartLogger();

});

}

/**

* Bootstrap services.

*

* @return void

*/

public function boot()

{

//

}

}

打开文件 config\app.php 找到providers数组,添加刚创建的类

...

App\Providers\SmartLoggerServiceProvider::class

在aliaes数组中创建别名

...

'Smartlogger' => App\SmartLogger\SmartLoggerFacade::class

可以对刚创建的facades类进行测试了 :)

//在需要使用的控制器中先引入类,

use App\SmartLogger\SmartLoggerFacade as SmartLogger;

//在方法体中静态调用测试下,是否正常执行输出吧。

SmartLogger::log("Hi");

感谢阅读

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接

我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值