【问题标题】:OOP PHP: how do i assign a variable value?OOP PHP:如何分配变量值?
【发布时间】:2010-12-06 10:46:06
【问题描述】:

不太擅长用文字表达这个问题......

我正在使用 API 来更新一些客户信息

$customer =             new Customer();
$customer->first_name = $value;
$customer->update();

上面会更新first_name,但是我想改变名字的地方:

$attribute =                'first_name';    
$customer =                 new Customer();
$customer->$attribute =     $value;
$customer->update();`

然后它将引用 Customer 类中的公共变量。

我想避免为每个属性编写一个方法(setter)。

【问题讨论】:

  • 以上方法你试过了吗?管用吗?如果是这样,问题是什么?
  • $customer->{$attribute} = $value;
  • 你的问题可能是$attrubute的拼写错误。
  • (参考) Variable variables
  • 我想说您的问题与您提供的代码无关。您能否提供一个完整的工作示例或向我们展示var_dump($customer)

标签: php oop


【解决方案1】:

$obj->$attr$obj->{$attr} 的工作方式相同。在这种情况下,{} 是多余的。当你需要写像$obj->{"123"} 这样的东西时,它们是有意义的。

<?php
$obj = new stdClass();
$attr = 'my_attr';
$obj->$attr = 'test'; 
var_dump($obj);
?>

您的代码的问题是您有错字。或者如果错字只是在问题的文本中,那么你没有任何问题。

【讨论】:

  • 酷这两个工作,在什么情况下大括号是合适的?数组?
  • @Haroldo 当存在歧义或语法不被允许时。前任。 $obj-&gt;{$arr[3]} 而不是 $obj-&gt;$arr[3]$obj-&gt;{"123"} 而不是 $obj-&gt;123
【解决方案2】:

你可以这样做

$attr = 'my_attr';
$obj->{$attr}; 

【讨论】:

    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2011-08-19
    • 1970-01-01
    • 2020-07-25
    • 2014-08-26
    相关资源
    最近更新 更多