В начале (когда я только познакомилась с пирожками) мне очень нравились страницы ошибок, которые так ненавязчиво намекали — а не создашь ли ты таблицу в базе данных? может быть стоит подумать о контроллере? и прочие очень нужные подсказки. Но потом, когда моя джедаистость в кейке выросла, а количество файлов для проектов сократилось до минимума — мне стало неприятно. В простых, однотипных решениях я не хочу делать одни и те же вещи каждый раз, я знаю какая таблица мне нужна. Контроллер — да он вовсе один, слегка распухший. Итак, что нам нужно — это перехват ошибок.
Для этого создаем в корне приложения (/app) файл app_error.php Обратите внимание, в этом месте, на верхнем уровне над всеми моделями/контроллерами/вьювами и прочим барахлишком у нас могут быть еще два (2!) нужных файла app_controller.php и app_model.php. Они наследуются всеми (еще раз подумайте!) соответствующими классами Вашего приложения. Безграничные возможности минимизации писанины, не правда ли? Но о них чуть потом. Итак, мы создали файл ошибки, и теперь мы должны прописать главный класс ошибок
В базовом классе мы уже можем найти все действия, которые стоит переопределить, но нам сейчас нужны совсем не все. Начнем с таблиц.
Что тут происходит? Если нужна таблица пользователей, например, мы только что скопировали проект простых сайтов на новый хостинг для установки и нет там еще такой таблицы — то мы ведь сами умные и знаем как таблица должна выглядеть. Да будет свет! Да появится таблица нужная! Схемы таблиц можно хранить в отдельном файле, добавлять логику к созданию — но посмотрите, как прекрасен этот мир) В коде есть маленькая заплатка — в самом начале очищается кеш таблиц базы данных, ведь то что мы создали таблицу так хитро не убирает ошибку «такой таблицы нет» в списке. Поэтому чистота — наш друг)
Интересный tip. Но ИМХО проще залить дамп базы при переезде. А вот в ядре кейка этому есть применение. Например когда сессии используют БД, то таблица cake_sessions могла бы и автоматом создаться. Тем более, что скачиваемых пакетов кейка (1.3) файла sql с дампом cake_sessions на своем старом месте я не обнаружил.
кому как удобнее, сама возможность полезна (мне очень нравится уменьшать свою работу, а в одном скрипте переездов больше чем изменений главных таблиц)