我得到以下错误“使用.作为.”语法
Fatal error: An alias was defined for method getRoles(), which exists in both MembersBundle\Adapter\User\UserTrait and FrontendPermissionToolkitBundle\CoreExtensions\Traits\PermissionResourcesAsRolesTrait. Use MembersBundle\Adapter\User\UserTrait::getRoles or FrontendPermissionToolkitBundle\CoreExtensions\Traits\PermissionResourcesAsRolesTrait::getRoles to resolve the ambiguity in **/Model/DataObject/CombinedUserAndCustomer.php on line 17以下是文件:
<?php
declare(strict_types=1);
namespace CosmicCoreBundle\Model\DataObject;
use CoreShop\Component\Core\Model\Customer;
use FrontendPermissionToolkitBundle\CoreExtensions\Traits\PermissionResourcesAsRolesTrait;
use MembersBundle\Adapter\User\UserInterface;
use MembersBundle\Adapter\User\UserTrait;
use CustomerManagementFrameworkBundle\Model\CustomerInterface;
use CustomerManagementFrameworkBundle\Model\Traits\CustomerTrait;
/**
* Combines the members user with the CoreShop customer
*/
abstract class CombinedUserAndCustomer extends Customer implements UserInterface, CustomerInterface
{
use UserTrait {
getRoles as getMembersRoles;
}
use PermissionResourcesAsRolesTrait {
getRoles as getPermissionResourceRoles;
}
use CustomerTrait;
/**
* Retrieve all allowed permission resources of current object prefixed with ROLE_
*
* @return string[]
*/
public function getRoles(): array
{
// Combine CoreShop roles with members and permission resource roles
return array_merge(
parent::getRoles(),
$this->getMembersRoles(),
$this->getPermissionResourceRoles()
);
}
}它安装在pimcore中(symfony 5框架),我使用php8.1,如果有人能解释问题所在,我会很高兴的。谢谢^^
发布于 2022-04-28 10:13:00
除了@MEriksson注释之外,您还必须像这样重写代码,以避免函数名称冲突。就像这样:
抽象示例代码
<?php
trait UserTrait {
public function getRoles() {
echo 'roleFromUserTrait';
}
public function make1() {
echo 'A';
}
}
trait PermissionResourcesAsRolesTrait {
public function getRoles() {
echo 'roleFromPermissionResourcesAsRolesTrait';
}
public function make2() {
echo 'B';
}
}
class Hello {
use UserTrait, PermissionResourcesAsRolesTrait {
UserTrait::getRoles insteadof PermissionResourcesAsRolesTrait;
UserTrait::getRoles as getR1;
PermissionResourcesAsRolesTrait::getRoles insteadof UserTrait;
PermissionResourcesAsRolesTrait::getRoles as getR2;
}
}
$h = new Hello();
print_r($h->getR1());
print_r($h->getR2());https://stackoverflow.com/questions/72039875
复制相似问题