【发布时间】:2019-02-12 18:55:04
【问题描述】:
我正在尝试从代码中重建一个对象。首先我将对对象的调用分解为数组,然后将数组转换为对象,然后测试调用是否有效。
创建的对象看起来不错,但测试调用失败。
$claim = new_client();
print_r($claim);
$pat = $claim->patientFirstName();
echo $pat;
function new_client()
{
$text = '
$claim->patientFirstName()
UNWANTED STUFF.
$claim->patientMiddleName()
UNWANTED STUFF.....
$claim->patientLastName() ';
$client = array();
$i = 1 ;
$array = (explode("claim->",$text));
foreach ($array as &$variable) {
$variable = substr($variable, 0, strpos($variable, "()"));
$client[$variable] = $i;
$i++;
}
unset ($variable);
$object = new stdClass();
foreach ($client as $key => $value)
{
$object->$key = $value;
}
return $object;
}
这是结果。
stdClass Object ( [] => 1 [patientFirstName] => 2 [patientMiddleName] => 3
[patientLastName] => 4 )
Fatal error: Uncaught Error: Call to undefined method
stdClass::patientFirstName()...
所以任何关于为什么的想法 $pat = $claim->患者名字(); 失败了吗?
【问题讨论】:
-
似乎有引号和句号不匹配。单引号内的 PHP 代码不会被评估
-
您正在为 $claim 变量分配一个函数,并尝试使用该变量调用其他函数(将其视为类对象。)。 new_client() 是函数还是类对象?
-
结果似乎是一个格式良好的 stdClass 对象,当代码运行时可以在 print_r 中看到,所以虽然这可能是真的,但它是答案吗?
-
new_client() 是一个返回类对象的函数。
-
它是属性而不是方法。
$pat = $claim->patientFirstName;会工作