PHP对象变量可以以数字开头吗


Can a PHP object variable start with a number?

我一直在处理网站的一些旧部分,发现自己处于必须运行以下代码的情况

<?=($stone->2_way)? 'checked' : ''?>

尝试这样做会导致页面崩溃,而此

<?=($stone->rectangular)? 'checked' : ''?>

没有。我想知道是不是因为变量以数字开头?我可以var_dump石头对象并获得

object(Cut_Stone)#54 (6) {
  ["errors"]=>
  NULL
  ["attributes":"ActiveRecord'Model":private]=>
  array(13) {
    ["stone_id"]=>
    int(24)
    ["stone_name"]=>
    string(11) "Test Stone "
    ["active"]=>
    int(1)
    ["rectangular"]=>
    int(1)
    ["2_way"]=>
    int(1)
    ["3_piece_radius"]=>
    int(1)
    ["3_piece_straight"]=>
    int(1)
    ["wedge"]=>
    int(1)
    ["partial_wash"]=>
    int(1)
    ["pier_cap"]=>
    int(1)
    ["pier_cap_w_flat"]=>
    int(1)
    ["radiused_hearth"]=>
    int(1)
    ["total_washed"]=>
    int(1)
  }
  ["__dirty":"ActiveRecord'Model":private]=>
  array(0) {
  }
  ["__readonly":"ActiveRecord'Model":private]=>
  bool(false)
  ["__relationships":"ActiveRecord'Model":private]=>
  array(0) {
  }
  ["__new_record":"ActiveRecord'Model":private]=>
  bool(false)
}

同样重要的是要注意,这个对象已经在其他地方使用过了,所以我真的不知道这里发生了什么。

尝试在属性名称周围使用括号和引号:

<?=($stone->{'2_way'})? 'checked' : ''?>