У меня есть структура приложения Zend Framework, как показано ниже:
/application
/library
/Zend
/Core
/Filter
/MyFilter.php
/Validator
/MyValidator.php
Я хотел бы поместить настраиваемые фильтры и валидаторы в соответствующие папки и автоматически загружать их при использовании. Однако я не могу понять, как лучше всего этого добиться.
Мне нужно решение для работы с Zend_Filter_Input следующим образом:
$filters = array(
'month' => 'Digits',
'account' => 'StringTrim',
'other' => 'MyFilter'
);
$validators = array(
'account' => 'Alpha',
'other' => 'MyValidator'
);
$inputFilter = new Zend_Filter_Input($filters, $validators);
Что я уже знаю:






Я разработал и внедрил Zend_Filter_Input еще в 2007 году.
Вы можете добавить новые префиксы классов, чтобы облегчить загрузку пользовательских классов фильтра и валидатора. По умолчанию Zend_Filter_Input ищет классы с префиксами "Zend_Filter" и "Zend_Validate". Попробуй это:
$inputFilter->addNamespace('Core_Filter');
Перед запуском isValid() или других методов объекта.
В качестве альтернативы вы также можете передать новую строку префикса класса в массиве параметров, четвертый аргумент конструктору Zend_Filter_Input:
$options = array('inputNamespace' => 'Core_Filter');
$inputFilter = new Zend_Filter_Input($filters, $validators, $data, $options);
См. Также документация, который я написал для Zend_Filter_Input.
Вот что SO определяет как «окончательный ответ на заданный вопрос» :)
@BillKarwin, ссылка на документацию битая. Можете ли вы предоставить обновление?
@ FopaLéonConstantin, я исправил ссылку.
Превосходно! Я часами читал документацию, но, должно быть, пропустил упоминание об этом. Спасибо!