在我的演示项目中,我想访问某些类的静态变量,但这些变量名称是动态传递的。我试图使用如下所示的函数变量:
public function filterBy($params)
{
foreach ($params as $key=>$value) {
$filter_field_name = strtoupper($key);
$this->criteria->add(ProductPeer::$filter_field_name, $value, Criteria::EQUAL);
}
return $this;
}
它给了我错误
致命错误:访问未声明的静态属性: ProductPeer :: $ filter_field_name in 第47行/home/sfprojects/shopme/lib/product/ProductDb.php
虽然如果我使用ProductPeer::STATUS
代替ProductPeer::$filter_field_name
,那么它可以正常工作。
这里有什么问题?
答案 0 :(得分:1)
有一个函数constant()
可以执行此操作:
constant('ProductPeer::' . $filter_field_name);
答案 1 :(得分:0)
$ this-> criteria-> add(ProductPeer :: $$ filter_field_name,$ value,Criteria :: EQUAL);
使用双美元符号作为其他变量的参考。像$$ filter_field_name