воскресенье, 22 мая 2011 г.

Имена ключей в memcache backend Zend Framework (Костыли)

Из рубрики "Чего мне хотелось бы в Zend Framework, а его там нет".

в Zend_Cache_Core: Invalid id or tag 'my-namespace:my-key' : must use only [a-zA-Z0-9_]

по нашим внутренним правилам: Имена ключей в key-value хранилищах должны разделяться двоеточием (:) где используются переменные, а также в именах ключей минусом (-) заменяются пробелы, т.е.
'users:3', 'users:17', 'users-by-eye-color:desc', 'users-by-eye-color:asc' и т.п.

ZF не любит в именах символы ':' и '-'. Наследование и переопределение Zend_Cache_Core::_validateIdOrTag() тоже не помогает, все вызовы в ZF происходят так:
self::_validateIdOrTag($tag);

* This source code was highlighted with Source Code Highlighter.
а должны так:
static::_validateIdOrTag($tag);

* This source code was highlighted with Source Code Highlighter.

вобщем, меняем в Zend_Cache_Core::_validateIdOrTag($tag)
if (!preg_match('~^[a-zA-Z0-9_]+$~D', $string)) {
  Zend_Cache::throwException("Invalid id or tag '$string' : must use only [a-zA-Z0-9_]");
}


* This source code was highlighted with Source Code Highlighter.
на
if (!preg_match('~^[a-zA-Z0-9_\:\-\.\*]+$~D', $string)) {
  Zend_Cache::throwException("Invalid id or tag '$string' : must use only [a-zA-Z0-9_]");
}


* This source code was highlighted with Source Code Highlighter.

Комментариев нет:

Отправить комментарий