2016-06-03 5 views
1

В моем демонстрационном проекте я хочу получить доступ к статической переменной некоторого класса, но эти имена переменных проходят динамически. пытаюсь использовать переменную функцию, как приведено ниже:Ошибка в переменной функции доступа как статическая переменная

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; 
    } 

Это дает мне ошибку

Fatal error: Access to undeclared static property: ProductPeer::$filter_field_name in /home/sfprojects/shopme/lib/product/ProductDb.php on line 47

Хотя, если я использую ProductPeer::STATUS вместо ProductPeer::$filter_field_name то он работает.

Что здесь не так?

ответ

1

Существует функция constant(), что может это сделать:

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

Yup, работает отлично! Благодарю. хотя я не знаю причины этого, если вы можете объяснить причину доступа через постоянную функцию, тогда было бы полезно – Rupal

+0

Я полагаю, что '' 'обращается только к свойствам класса, тогда как константы - это отдельная языковая конструкция, которая работает по-разному , –

0

$ this-> criteria-> добавить (ProductPeer :: $$ filter_field_name, $ значение, критерии :: РАВНЫЕ);

Используйте знак двойного доллара для справки другой переменной. Как $$ filter_field_name

Смежные вопросы