访问函数变量作为静态变量出错

时间:2016-06-03 07:15:36

标签: php oop static

在我的演示项目中,我想访问某些类的静态变量,但这些变量名称是动态传递的。我试图使用如下所示的函数变量:

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,那么它可以正常工作。

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

有一个函数constant()可以执行此操作:

constant('ProductPeer::' . $filter_field_name);

答案 1 :(得分:0)

$ this-> criteria-> add(ProductPeer :: $$ filter_field_name,$ value,Criteria :: EQUAL);

使用双美元符号作为其他变量的参考。像$$ filter_field_name