【问题标题】:How do you use a @ symbol in the name of a PHP object如何在 PHP 对象的名称中使用 @ 符号
【发布时间】:2010-10-15 12:46:57
【问题描述】:

我有一个 XML 文件,其中一个名称带有 @attributes 标签

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [PART_NUMBER] => ABC123

我想像 $product->@attributes['part_number'] 一样引用这个对象,但 @ 符号当然会导致错误。

那么如何在对象中引用这个项目呢?

【问题讨论】:

    标签: php object reference


    【解决方案1】:

    嗯,在 SimpleXML 的情况下,您将调用 $product->attributes() 中定义的 manual 方法。这将为您提供一个将属性名称映射到值的数组。

    【讨论】:

      【解决方案2】:

      $obj:

      stdClass Object
      (
          [@id] => Hello
          [$] => World!
      )
      

      访问@id$

      echo $obj->{'@id'};
      echo ' ';
      echo $obj->{'$'};
      

      【讨论】:

        【解决方案3】:

        $product[0]['PART_NUMBER'] 应该可以工作。

        如果你有多个属性,你应该在foreach中使用$product->attributes()

        attributes in SimpleXML manual

        【讨论】:

          【解决方案4】:

          如果您使用的是 SimpleXML 对象,则已经有一个内置的 attributes 方法(没有 @ 符号)——像这样使用它:$product->attributes('part_number');

          如果您尝试创建自己的对象以映射到 XML,那么正如您已经发现的那样,您不能在 PHP 变量名中使用 @ 符号(也不能使用除下划线之外的任何其他符号)。

          我建议简单地使用$product->attributes['part_number'](即完全没有@ 符号)并将其映射到您的类中。

          如果您真的需要将其映射到您的变量名称中,那么您真正希望的最好结果就是某种替换字符串,您可以在两种格式之间进行转换时进行交换.

          例如:$product->at__attributes['part_number']

          但这并不是一个特别好的解决方案,恕我直言。

          【讨论】:

            猜你喜欢
            • 2019-12-09
            • 2011-05-21
            • 2011-03-02
            • 1970-01-01
            • 2015-03-24
            • 1970-01-01
            • 2014-05-18
            • 1970-01-01
            相关资源
            最近更新 更多