CakePHP без базы данных

CakePHP без базы данныхЧасто видел в интернете упреки в сторону 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 – работает.

Автор

  • CakePHP вообще не особо простое в использовании, говорю по собственному опыту. В чем собственно преимущества перед аналогами?

  • Но ведь заметка вроде не о том? 🙂

    Мне после RoR он как родной пошел. Сейчас начинаю заглядываться в сторону Yii, но и он бы я б не сказал, что проще. Я вообще если честно сомневаюсь, что любой более-менее серьезный фреймворк может быть очень простым. Интуитивно более понятен, возможно, но опять же, субъективно это все, одному человеку ближе одно, другому второе…