通过composer引入后,类名重复
lxepoo opened this issue · 3 comments
lxepoo commented
用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就不能用。
alberthuang24 commented
有点惨...说明你的项目也没有命名空间嘛...
alberthuang24 commented
bwt..阿里的sdk真的很水.建议自己写
rbtyang commented
用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~