aliyun/aliyun-log-php-sdk

通过composer引入后,类名重复

lxepoo opened this issue · 3 comments

用composer autoload files来加载了,结果项目里有个Log类,和你们的Log类冲突了,报错Fatal error: Cannot declare class Log, because the name is already in use in E:\wwwroot\api-console\extra\aliyun-log\Aliyun\Log\sls.proto.php on line 129,这个有点致命了,因为你们的autoload方式所有类直接引入了全局名称空间,只要有任何一个地方和你们撞类名,你们这个SDK就不能用。

有点惨...说明你的项目也没有命名空间嘛...

bwt..阿里的sdk真的很水.建议自己写

用composer autoload files来加载了,结果项目里有个Log类,和你们的Log类冲突了,报错Fatal error: Cannot declare class Log, because the name is already in use in E:\wwwroot\api-console\extra\aliyun-log\Aliyun\Log\sls.proto.php on line 129,这个有点致命了,因为你们的autoload方式所有类直接引入了全局名称空间,只要有任何一个地方和你们撞类名,你们这个SDK就不能用。

  • 修改 aliyun-log-php-sdk\Aliyun\Log\sls.proto.php 内的所有方法名,都加上前缀 Aliyun_,并全局搜索和修改相关引用【这一步是关键】
  • 注释掉 aliyun-log-php-sdk\Aliyun\Log\Client.php 内的 require_once realpath ( dirname ( __FILE__ ) . '/../../Log_Autoload.php' );
  • 将 阿里SDK 放到你的项目中任意位置,如 app/Libs/
  • 修改 你的项目根目录下的 composer.json,增加 classmap 配置项 app/Libs/aliyun-log-php-sdk/Aliyun(根据上一步放的位置决定)
  • 执行 composer dumpautoload, Finish~