Наверняка многие слышали о «классных» процессорах, но не каждый знает о том, какие фишки в них есть.
Вот небольшой пример того, как в процессоре можно «переключиться» на другой процессор, а точнее вернуть инстанс другого выполняемого процессора.
// Запросы из браузера идут на один и тот же коннектор (и потом на процессор), чтобы получить список компаний или сотрудников компаний // Процессор-свитч в файле процессора class CompaniesUsersGetListProcessor extends modProcessor{ // Статический метод процессора, который может подменить выполняемый процессор public static function getInstance(modX &$modx,$className,$properties = array()) { switch($properties['type']){ // Если тип - company, то подгружаем другой класс, который сформирует список пользователей case 'company': $className = require_once dirname(__FILE__).'/users/getlist.class.php'; break; default: // Если запрашиваемый раздел - корень - выполняем процессор списка компаний if($properties['id'] == 'root'){ $className = 'CompaniesGetListProcessor'; } } // Возвращаем инстанс актуального процессора // Если $className не перегрузили, то возвращается инстанс текущего класса и в результате выполнится его метод process(), который вернет ошибку return new $className($modx, $properties); } public function process() { return $this->failure('Неверные данные'); } }