手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

Mac PHP7 Lumen Event冲突

首页 > PHP >

在使用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

« 上一篇 | 下一篇 »

只显示10条记录相关文章

1条记录访客评论

lumen你启动的时候可以不用withAliases或者自己指定$userAliases数组的,不过如果不用别名,你调用的地方就要调对应的facade对应的别名类,好处是不怕冲突,坏处是代码提示没了,绕过的方式是写之前用别名+ide-helper,写完了替换回去方便框架级的扩展,另外lumen改改配置是可以打成phar包用的,去掉几个realpath调用,把storage路径配好就行。

Post by 阿熊 on 2016, December 8, 8:47 AM 引用此文发表评论 #1


发表评论

评论内容 (必填):