【发布时间】:2012-02-26 10:57:51
【问题描述】:
当我尝试在 PDOStatement::bindParam 方法中绑定重载属性时,
$stmt->bindParam(':'.$field.'', $this->$field, $pdoparam);
...
public function __get($param)
{
if(isset($this->$param))
return $this->$param;
}
我收到通知
Notice: Indirect modification of overloaded property Msgs::$posttime has no effect in ...
经过一些研究,我在 php.net 上发现了一个关于类似 problem 的错误报告。建议的解决方案是在 __get 定义之前添加 &。
&__get(...
但是当我尝试这样做时,我会收到另一个通知
Notice: Only variable references should be returned by reference in ...
PHP 版本为 5.3.8。
有没有办法解决这个问题?
【问题讨论】:
-
我们需要更多的代码,我们不知道 $posttime 做了什么以及函数 get 与什么有什么关系..
-
对不起,我错误地发表了这条评论。
-
您从哪个代码收到其他消息?
-
foreach ($this->modelfields as $field => $type) { $pdoparam = (stripos($type, 'int') === 0) ? PDO::PARAM_INT : PDO::PARAM_STR; $stmt->bindValue(':'.$field.'', $this->$field, $pdoparam); $this->modelfields 属性包含一个表字段(键)及其类型(值)的数组,$this->$field - 应插入该字段的对应值。只要有定义的值,一切都可以正常工作,但在某些情况下没有要插入的值(例如,如果该字段必须用它的默认值填充)。在那种情况下,我会收到前面提到的通知。