当前位置: 首页 > 知识库问答 >
问题:

在多个堆叠性状中使用相同的方法

孙才捷
2023-03-14

我试图从两个独立的特性中运行两个函数,这两个特性将在一个类中应用,但依次一个添加到另一个类中。下面是一个简单的例子

trait UserLevel{
    public function get(){
        echo 'World';
    }
}

trait SpecialUser{
    use UserLevel {
        UserLevel::get as userGet;
    }

     public function get(){

         echo 'Hello ';
         $this->userGet();
     }
}

Class GetUser{
    use UserLevel, SpecialUser;
}

$user = new GetUser;
$user->get(); 

我在这个问题上的所有谷歌搜索只是展示了如何使用代替来覆盖一个与另一个。

编辑:

这个问题与引用的问题不同。在运行带有指定更改的代码时

致命错误:尚未应用Trait方法get,因为第20行的GetUser in/in/hg9ok中存在与其他Trait方法的冲突

进程已退出,代码为255。

谢谢

共有1个答案

袁枫涟
2023-03-14

基本上不,你无法实现你所描述的。技术上的原因是,如果您尝试使用多个具有相同方法名称的trait(请参阅文档中的“冲突解决”部分),并且无法从trait(即UserLevel::get)中有选择地访问方法,则会出现致命错误,但这实际上是对trait的误解或误用。

特性用于功能的横向组合,而示例中表明情况并非如此的关键部分是“SpecialUser”特性。如果这确实是一个特殊的用户,那么为什么它不是一个具有您描述的功能的“用户”子类,而不是一个特性?

这是一个你试图在这里实现什么的问题——不是从代码的角度,而是从更整体的角度——并将OOP应用于此,而不是这里似乎正在发生的事情,反之亦然。

 类似资料:
  • 我需要一种在ChartJS中显示堆叠条形图中多个数据段的方法。在官方文档中,标签属于堆栈的每个部分,但我需要这些部分是独立的。 我已经模拟了我需要实现的输出类型。我们每天有三个堆叠的条,每个条显示一个单独的数据集。在每个数据集中,我们有一个段,它实际上是该条的子集。 不幸的是,中的属性似乎不接受数组。这个图表可以使用ChartJS吗?

  • 本文向大家介绍Python 堆叠柱状图绘制方法,包括了Python 堆叠柱状图绘制方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Python 堆叠柱状图绘制方法,分享给大家,具体如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 这是我写的: 但是对于每个领域我都有价值。我想使用三元运算符,而不是因为我想尝试一下,看看它会如何完成。 此代码有什么问题? 问题答案: 其他人已经提出了正确的方法,但是如果您真的想使用三元运算符,则需要使用括号:

  • 这是我写的: 但是对于每个字段,我都得到值。我想使用三元运算符,而不是,因为我想试验一下,看看它是如何实现的。 这个代码有什么问题?

  • 问题内容: 此代码完美地工作。方法test()适用于两个接口。幕后到底发生了什么?在实际情况下,此功能有何用处? 问题答案: 因为它是一个接口,所以不会造成任何危害。通过实现和,您基本上是在为您的课程使用蓝图。双方并说,应实施一个名为方法 您的类实现了该方法,因此接口已完成其工作。 基本上,您的班级在说:“哦,我需要因为接口而实现”,然后您就实现了。然后您的班级说:“哦,嘿,由于接口我需要再次实现

  • 问题内容: 我尝试使用achartengine向堆叠条形图的演示示例中添加另一组值,但我引入的新值未出现在图表上。堆叠杆是否限于两根? 问题答案: AChartEngine显示堆叠的条形图的方式存在误解。它并没有真正堆叠它们,而是将它们显示为一个。这意味着您将总是要先添加较大的值,然后再添加较小的值,依此类推,因为它呈现第一个序列,第二个序列位于第一个序列之上,依此类推。 更新:从1.2.0版开始