Fi1osof 22 августа 2013 0 0
Наверняка многие слышали о «классных» процессорах, но не каждый знает о том, какие фишки в них есть.

Вот небольшой пример того, как в процессоре можно «переключиться» на другой процессор, а точнее вернуть инстанс другого выполняемого процессора.
// Запросы из браузера идут на один и тот же коннектор (и потом на процессор), чтобы получить список компаний или сотрудников компаний

// Процессор-свитч в файле процессора
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('Неверные данные');
    }
}
0 комментариев
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.