手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜Qcloud , 注册 | 登陆
浏览模式: 标准 | 列表2016年12月7日的文章

Mac PHP7 Lumen Event冲突

在使用Lumen进行开发的时候。如果你使用:./artisan的时候报错:Cannot declare class Event, because the name is already in use。检查一下LOG发现是:

XML/HTML代码
  1. [2016-12-07 15:27:37] lumen.ERROR: ErrorException: Cannot declare class Event, because the name is already in use in /home/web/vendor/laravel/lumen-framework/src/Application.php:661  
  2. Stack trace:  
  3. #0 [internal function]: Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(2, 'Cannot declare ...', '/Volumes/docume...', 661, Array)  
  4. #1 /home/web/vendor/laravel/lumen-framework/src/Application.php(661): class_alias('Illuminate\\Supp...', 'Event')  
  5. #2 /home/web/vendor/laravel/lumen-framework/src/Application.php(631): Laravel\Lumen\Application->withAliases(Array)  
  6. #3 /home/web/vendor/laravel/lumen-framework/src/Application.php(766): Laravel\Lumen\Application->withFacades(true)  
  7. #4 /home/web/vendor/laravel/lumen-framework/src/Console/Kernel.php(54): Laravel\Lumen\Application->prepareForConsoleCommand(true)  
  8. #5 [internal function]: Laravel\Lumen\Console\Kernel->__construct(Object(Laravel\Lumen\Application))  
  9. #6 /home/web/vendor/illuminate/container/Container.php(794): ReflectionClass->newInstanceArgs(Array)  
  10. #7 /home/web/vendor/illuminate/container/Container.php(644): Illuminate\Container\Container->build('App\\Console\\Ker...', Array)  
  11. #8 /home/web/vendor/laravel/lumen-framework/src/Application.php(211): Illuminate\Container\Container->make('App\\Console\\Ker...', Array)  
  12. #9 /home/web/vendor/illuminate/container/Container.php(231): Laravel\Lumen\Application->make('App\\Console\\Ker...', Array)  
  13. #10 /home/web/vendor/illuminate/container/Container.php(746): Illuminate\Container\Container->Illuminate\Container\{closure}(Object(Laravel\Lumen\Application), Array)  
  14. #11 /home/web/vendor/illuminate/container/Container.php(644): Illuminate\Container\Container->build(Object(Closure), Array)  
  15. #12 /home/web/vendor/laravel/lumen-framework/src/Application.php(211): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)  
  16. #13 /home/web/artisan(32): Laravel\Lumen\Application->make('Illuminate\\Cont...')  
  17. #14 {main}  

看了一下,Application.php的第661行对应的方法,我靠。

PHP代码
  1. /** 
  2.      * Register the aliases for the application. 
  3.      * 
  4.      * @param  array  $userAliases 
  5.      * @return void 
  6.      */  
  7.     public function withAliases($userAliases = [])  
  8.     {  
  9.         $defaults = [  
  10.             'Illuminate\Support\Facades\Auth' => 'Auth',  
  11.             'Illuminate\Support\Facades\Cache' => 'Cache',  
  12.             'Illuminate\Support\Facades\DB' => 'DB',  
  13.             'Illuminate\Support\Facades\Event' => 'Events',  
  14.             'Illuminate\Support\Facades\Gate' => 'Gate',  
  15.             'Illuminate\Support\Facades\Log' => 'Log',  
  16.             'Illuminate\Support\Facades\Queue' => 'Queue',  
  17.             'Illuminate\Support\Facades\Schema' => 'Schema',  
  18.             'Illuminate\Support\Facades\URL' => 'URL',  
  19.             'Illuminate\Support\Facades\Validator' => 'Validator',  
  20.         ];  
  21.   
  22.         if (! static::$aliasesRegistered) {  
  23.             static::$aliasesRegistered = true;  
  24.   
  25.             $merged = array_merge($defaults$userAliases);  
  26.             foreach ($merged as $original => $alias) {  
  27.                 class_alias($original$alias);  
  28.             }  
  29.         }  
  30.     }  

。。。。。怎么可以这样写呢?也不担心代码会不会冲突。就直接这样了??怪不得很多代码识别不了。更痛苦的是,前段时间为了测试命令行下的多线程,加载了:brew install php70-event,直接就冲突了。

不得已,brew remove php70-event。反正这个我也几乎用不到。哎~

所幸,搞定

 

 

 

Tags: lumen, event