Представим, что есть общая папка app/views и папка app/modules/Module_Name/views. В модуле вызывается self::createRender(array $blocks = array()), который автоматом навешивает второй из упомянутых путей: Код (Text): public function createRender(array $blocks = array()) { return new Render($blocks, $this->viewspath); } При этом viewspath инициализируется как Код (Text): ob_start(); echo dirname(__FILE__), DIRECTORY_SEPARATOR, get_called_class(), DIRECTORY_SEPARATOR, 'views'; $this->viewspath = ob_get_clean(); где dirname(__FILE__) - это путь к файлу абстрактного класса Module, расположенного в папке modules в файле Module.php, а get_called_class() - имя потомка. Так, если потомок - модуль Forum, то для него createRender попытается подключить нечто из папки modules/Forum/views. Если там не найдёт (file_exists), обратится к общей папке. Однако, явное использование file_exists кажется довольно грубым: при включенном кэше всё равно будет проверяться наличие файла. Имеет ли смысл вызывать set_include_path для внедрения пути в папке modules? Подключить так три модуля сразу и они начнут лазить друг к другу в представления. Может, есть некое элегантное решение?