先晒版本
事情起因
系统要引进阿里云的日志系统,去github上淘了一些包,于是选择了这个。
composer require wppd/aliyun-log-php-sdk
于是报了这个错,显示Log的命名重复了。
解决思路
定位Log的命名与服务注册中的Log重名,想办法把服务注册的命名改名。先找到服务注册的地方。
发现在基础包Application.php中有这么一段代码。
/**
* Register the aliases for the application.
*
* @param array $userAliases
* @return void
*/
public function withAliases($userAliases = [])
{
$defaults = [
'Illuminate\Support\Facades\Auth' => 'Auth',
'Illuminate\Support\Facades\Cache' => 'Cache',
'Illuminate\Support\Facades\DB' => 'DB',
'Illuminate\Support\Facades\Event' => 'Event',
'Illuminate\Support\Facades\Gate' => 'Gate',
'Illuminate\Support\Facades\Log' => 'Log', //就是在这个地方注册的
'Illuminate\Support\Facades\Queue' => 'Queue',
'Illuminate\Support\Facades\Route' => 'Route',
'Illuminate\Support\Facades\Schema' => 'Schema',
'Illuminate\Support\Facades\Storage' => 'Storage',
'Illuminate\Support\Facades\URL' => 'URL',
'Illuminate\Support\Facades\Validator' => 'Validator',
];
if (! static::$aliasesRegistered) {
static::$aliasesRegistered = true;
$merged = array_merge($defaults, $userAliases); //这个地方进行合并
foreach ($merged as $original => $alias) {
class_alias($original, $alias);
}
}
}
于是就在bootstrap/app.php调用下这个方法,把原来的数组覆盖掉。
注意要在new app 之后就调用withAliases。
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/
$app = new Laravel\Lumen\Application(
dirname(__DIR__)
);
$app->withAliases(['Illuminate\Support\Facades\Log' => 'Lara_Log']);
$app->withFacades();
$app->withEloquent();