Часто видел в интернете упреки в сторону CakePHP в том смысле, что ему для работы обязательно нужна база данных, и это, мол, великое зло. Как-то не обращал внимания на данные утверждения (и правильно делал), так как всегда использовал базу данных. Но вот случилась необходимость сделать сайт на CakePHP без БД (временный сайт, со статикой, в будущем подразумевающий развитие до использования базы). В русскоязычной части интернета не удалось найти решения этой задачи (ясно примерно как это сделать, но хочется готового 🙂 ), к счастью, на англоязычном блоге был найден ответ.
Итак, приступим.
Сначала нужно создать для кейка новый источник данных (который будет заглушкой, по сути, и с данными никак работать не будет).
Создаем папку:
app/models/datasources/dbo
В которой нужно создать файл с именем:
dbo_dummy_source.php
В этом файле мы и опишем свой «источник данных». Вот содержимое файла:
<?php
class DboDummySource extends DataSource {
var $description = "This is a dummy data source";
function connect() {
$this->connected = true;
return $this->connected;
}
function disconnect() {
$this->connected = false;
return !$this->connected;
}
function value($string) {
return "\0".$string."\0";
}
}
?>
Вот и все. Теперь осталось только указать в файле конфигурации базы данных («app/config/database.php«) наш фиктивный драйвер, вместо реального драйвера подключения к базе данных, обычно это «mysql». Файл конфигурации в итоге должен выглядеть примерно так:
<?php
class DATABASE_CONFIG {
var $default = array( 'driver' => 'dummy_source');
}
?>
И не забываем во всех моделях указать, что база данных для них не используется:
var $useTable = false;
В источнике решения автор пишет, что проверял данный код в версии кейка 1.2.x. Я проверял на 1.3 RC4 – работает.