【发布时间】:2014-12-02 13:19:58
【问题描述】:
我已经编写了一个辅助函数来“清理”回调变量以输入 MySQL。这是我写的函数:
public function string($object, $objectPath) {
if (!empty($object->$objectPath) || $object->$objectPath !== '') {
$value = $object->$objectPath;
} else {
return 'NULL';
}
if (!empty($value) || $value != '') {
return "'".str_replace("'","''",$value)."'";
} else {
return 'NULL';
}
}
现在,$object 始终是调用返回的对象,$objectPath 始终是指向给定值的字符串。这就是问题所在。这很有效:
$value = $this->db->string($object, 'foo');
但是,这不起作用:
$value = $this->db->string($object, 'foo->bar->foo1->bar1');
每当$objectPath 的深度超过“一层”时,我就会从(亚马逊的)客户端库中收到以下错误:
Fatal error: Call to undefined method MarketplaceWebServiceOrders_Model_Order::getFoo->Bar() in /path/to/Model.php on line 63
错误所指的代码块是这样的:
public function __get($propertyName)
{
$getter = "get$propertyName";
return $this->$getter(); // this is line 63
}
$object 不是 XML,所以我不能使用 SimpleXMLElement 和 XPath。
我的代码有什么问题?我是在连接一个对象和一个字符串吗?如果是这样,我怎样才能做到这一点?我怎样才能让这个函数完成我想要做的事情?
顺便说一下,我使用的是 PHP 5.4.27。
【问题讨论】:
标签: php mysql string object amazon-web-services