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

PHP特性:如何解决属性名称冲突?

南门峰
2023-03-14

当类使用具有相同属性的两个特征时,如何解决属性名称冲突?

示例:

<?php

trait Video {
    public $name = 'v';
}


trait Audio {

    public $name = 'a';
}


class Media {
    use Audio, Video;
}

$media = new Media();
$media->name;

提前道谢!

共有1个答案

海雪松
2023-03-14

不能,它只适用于方法。
但是,它们只能在值相同的情况下使用相同的属性名:

trait Video {
  public $name;
  function getName(){
    return 'Video';
  }
}
trait Audio {
  public $name;
  function getName(){
    return 'Audio';
  }
}
class Media {
  use Audio, Video {
    Video::getName insteadof Audio;
  }

  function __construct(){
    $this->name = $this->getName(); // 'Video'
  }
}
 类似资料:
  • 问题内容: 我的代码中具有对象属性,如下所示: 问题是我有100多个字段名称,需要动态写入属性名称。否则,对象名称和属性的键将始终相同。所以我尝试了: 希望可以动态更改属性名称并访问正确的值。但是,我一直在stdClass :: $ field中得到’undefined property $ field;。 我或多或少尝试在执行之前动态编写php,以便它可以输出适当的值。关于如何处理此问题的想法?

  • 和类: 和特性: 但是当我运行我的代码时,我得到了这个错误:

  • 通过使用JavaScript,是否有一种方法可以知道特定属性来自哪个名称空间? 我似乎找不到任何与这个问题相关的东西... 示例: 具有class属性的DIV元素。类来自哪个命名空间? 具有viewBox属性的SVG元素。viewBox来自哪个命名空间? 编辑: 如果希望在USE元素上设置“xlink:href”属性,则必须指定名称空间“http://www.w3.org/1999/xlink”。

  • 我有一节课: 值是唯一的,如何通过其值获取属性的名称? 通过反射,例如:

  • 问题内容: 联接操作可以正常工作,但是当我重用df2时,我面临着无法解析的属性错误 错误:org.apache.spark.sql.AnalysisException:已解析的属性ID#426 问题答案: 正如我在评论中提及,它关系到https://issues.apache.org/jira/browse/SPARK-10925,更具体地说https://issues.apache.org/ji

  • 问题内容: 我有带有“ operation.date”,“ operation.name”等列的mysql表。用我获取该表数据作为对象后,得到此信息(行的print_r): 我怎么存取权限,并和所有其他古怪的命名对象的属性? 问题答案: 在您的SQL查询中指定别名,例如 或访问这些属性, 或将对象强制转换为数组,如下所示:。