如何在 Laravel 项目中创建自己的 Facade
通过这篇文章,我们可以学会如何定义自己的 facade
类,并且在我们的项目中使用它。
这里我想创建一个名称为 SmartLogger
的类,同时尝试使用它,下面让我们开始吧:
首先创建一个以 SmartLogger 命名的目录,并且在目录中创建如下 php 文件:#
.
├── SmartLoggerFacade.php
└── SmartLogger.php
0 directories, 2 files
SmartLogger.php#
<?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#
<?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#
<?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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: