duanfengdian7014 2010-10-08 16:20
浏览 14
已采纳

使用define()'d令牌访问属性?

I'd like to do this:

<?php
define('X', 'attribute_name');
// object $thing is created with member attribute_name
echo $thing->X;
?>

Attempting $thing->X, PHP takes X to be a property of $thing, and ignores the fact (rightly so) that it's a define()'d token. That in mind, I had expected $thing->{X} to work, but no dice.

The only solution I'v come up with is to use a man-in-the-middle variable, like so:

$n = X;
echo $thing->$n;

But this extra step seems fairly un PHP-esque. Any advice on a more graceful solution?

  • 写回答

1条回答 默认 最新

  • doushadu0901 2010-10-08 16:25
    关注
    echo $thing->{X};
    

    seems to work for me. Here was my test script:

    define('FOO', 'test');
    
    $a = new stdClass();
    $a->test = 'bar';
    
    echo $a->{FOO};
    

    outputs 'bar'.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器