我使用以下两个同名的类。
/src/AppBundle/Qrcode.php
namespace AppBundle\Qrcode;
use Endroid\QrCode\QrCode;
class Qrcode
{
和
/供应商/ Endroid /.../ Qrcode.php
namespace Endroid\QrCode;
use Endroid\QrCode\Exceptions\DataDoesntExistsException;
use Endroid\QrCode\Exceptions\VersionTooLargeException;
use Endroid\QrCode\Exceptions\ImageSizeTooLargeException;
use Endroid\QrCode\Exceptions\ImageFunctionUnknownException;
use ReflectionFunction;
class QrCode
{
在dev上它运行良好但不在prod上,因为我收到以下错误消息:
request.CRITICAL:未捕获的PHP异常 Symfony \ Component \ Debug \ Exception \ FatalErrorException:“编译错误: 无法声明类AppBundle \ Qrcode,因为名称是 已经在使用“at ... / src / AppBundle / Qrcode.php第8行。
我不明白为什么它不起作用。命名空间是不同的 它适用于开发部分...... 感谢
答案 0 :(得分:1)
您需要使用别名来区分类,因为QrCode
类已加载两次。
在,/src/AppBundle/Qrcode.php
namespace AppBundle\Qrcode;
use Endroid\QrCode\QrCode as EndroidQr // assign alias here to differnciate class
在此之后,new EndroidQr();
将实例化Endroid\QrCode\QrCode
类
注意: - 如果要在具有相同类名的文件中加载一个类,则需要指定别名。
希望它会对你有所帮助: - )