首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php -不能用作同名函数的别名

php -不能用作同名函数的别名
EN

Stack Overflow用户
提问于 2022-04-28 07:47:19
回答 1查看 156关注 0票数 0

我得到以下错误“使用.作为.”语法

代码语言:javascript
复制
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

以下是文件:

代码语言:javascript
复制
<?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,如果有人能解释问题所在,我会很高兴的。谢谢^^

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-28 10:13:00

除了@MEriksson注释之外,您还必须像这样重写代码,以避免函数名称冲突。就像这样:

抽象示例代码

代码语言:javascript
复制
<?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());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72039875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档