Пример создания блога

Это руководство проведет Вас через процесс создания простого блога. Мы установим CakePHP, создадим базу данных, построим всю логику приложения - вывод записей, добавление, удаление и редактирование записи.

Вот что Вам понадобится для этого:

  1. Веб-сервер. Мы предполагаем, что Вы используете Apache, по мере ознакомления с инструкциями использование других веб-серверов будет весьма схоже. Нам возможно придется поработать немного с настройками сервера, но большинство пользователей могут начать работать с CakePHP без необходимости изменять какие-либо параметры. Убедитесь, что Вы используете версию PHP не ниже 5.5.9, и что расширения mbstring и intl включены в PHP.
  2. Сервер БД. Мы собираемся использовать в этом руководстве сервер MySQL. Вы должны знать достаточно об SQL, чтобы суметь создать базу данных: в остальном можно положиться на CakePHP. Поскольку мы используем MySQL, убедитесь также, что у Вас включено расширение pdo_mysql в PHP.
  3. Базовые знания PHP.

Давайте приступим!

Получение CakePHP

Простейший путь установить CakePHP - это использование Composer. С помощью Composer Вы с легкостью установите фреймворк через командную строку или терминал. Сначала скачайте и установите Composer если у Вас его еще нет. Если у Вас установлен cURL, можете использовать следующую команду:

curl -s https://getcomposer.org/installer | php

Или Вы можете скачать composer.phar с веб-сайта Composer.

Затем просто набрать следующую строку в Вашем терминале из Вашей установочной папки, чтобы создать скелет приложения в ней. Для этого примера мы будем использовать папку “blog” но Вы можете назвать ее так, как Вам будет удобно.:

php composer.phar create-project --prefer-dist cakephp/app blog

В том случае, если Composer установлен глобально, можно ввести следующее:

composer self-update && composer create-project --prefer-dist cakephp/app blog

Преимущество при использовании Composer заключается в том, что он автоматически произведет все необходимые настройки по правам доступа и создаст файл конфигурации приложения config/app.php для Вас.

Также существуют и другие способы установки, если Вас не устраивает Composer. Проверьте раздел документации Установка, чтобы узнать больше.

Независимо от того, каким способом установки Вы решите воспользоваться, по окончании процесса установки, структура папки Вашего приложения будет выглядеть следующим образом:

/cake_install
    /bin
    /config
    /logs
    /plugins
    /src
    /tests
    /tmp
    /vendor
    /webroot
    .editorconfig
    .gitignore
    .htaccess
    .travis.yml
    composer.json
    index.php
    phpunit.xml.dist
    README.md

Теперь настало самое подходящее время для ознакомления с файловой структурой приложения: проверьте раздел документации Структура папок CakePHP.

Разрешения для папок tmp и logs

Папки tmp и logs должны иметь разрешения для записи данных веб-сервером. Если вы использовали Composer для установки, то все должно быть в порядке, если вы подтверждаете заппрос “Permissions set on <folder>”. Если же вы получили сообщение об ошибке или же хотите сделать это вручную, лучший способ будет выяснить под каким пользователем работает ваш веб-сервер (<?= `whoami`; ?>) и изменить права доступа для этих двух папок для этого пользователя. В итоге запускаемая команда (в *nix-системах) должна выглядеть так:

chown -R www-data tmp
chown -R www-data logs

Если по каким-то причинам CakePHP не сможет осуществлять запись в эти папки, вы будете проинформированы об этом пока будете работать в режиме отладки.

Хотя это и не рекомендуется, если же у вас нет возможности установить разрешения такие же, как у вашего веб-сервера, вы можете просто разрешить запись для нужных папок командой:

chmod 777 -R tmp
chmod 777 -R logs

Создание Базы данных блога

Следующим шагом давайте настроим необходимую базу данных MySQL для нашего блога. Если вы еще этого не сделали - создайте пустую базу данных для работы вашего приложения, с любым удобным именем, например cake_blog. Теперь, мы только создадим единственную таблицу для наших статей. Также для целей тестирования добавим в нее несколько статей. Выполните следующие SQL-запросы в вашей базе данных:

/* Во-первых, создадим таблицу с нашими статьями: */
CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

/* Затем добавим несколько статей для тестирования: */
INSERT INTO articles (title,body,created)
    VALUES ('The title', 'This is the article body.', NOW());
INSERT INTO articles (title,body,created)
    VALUES ('A title once again', 'And the article body follows.', NOW());
INSERT INTO articles (title,body,created)
    VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());

Имя таблицы и ее полей не случайны. Если вы следуете соглашениям CakePHP относительно баз данных и именования классов (все они приведены в Соглашения CakePHP), вы получите большое количество готовой функциональности без необходимости указания дополнительных настроек. CakePHP достаточно гибок, чтобы адаптироваться даже к довольно к противоречивым схемам баз данных, но следование соглашениям сэкономит вам кучу времени.

Просмотрите Соглашения CakePHP для более полной информации, но следует заметить, что называя нашу таблицу ‘articles’, мы автоматически делаем ее доступной нашей Модели Articles, а наличие полей с именами ‘modified’ и ‘created’ автоматически сделает их доступными для CakePHP.

Конфигурация Базы данных

Давайте теперь скажем CakePHP где расположена наша База данных и как с ней соединиться. Для многих это будет первый и последний раз когда они увидят файл настроек.

Настройка должна показаться довольно легкой: просто замените значения в массиве Datasources.default в файле config/app.php на нужные вам. В результате у вас должно получиться что-то вроде этого:

return [
    // More configuration above.
    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'username' => 'cake_blog',
            'password' => 'AngelF00dC4k3~',
            'database' => 'cake_blog',
            'encoding' => 'utf8',
            'timezone' => 'UTC'
        ],
    ],
    // More configuration below.
];

Как только вы сохраните ваш файл config/app.php, вам должна стать доступна приветственная страница CakePHP. Она также должна будет вам сказать, что База данных обнаружена и подключение к ней прошло успешно.

Примечание

Копия файла с настройками по умолчанию может быть найдена в config/app.default.php.

Дополнительные настройки

При желании можно настроить еще некоторые другие параметры. Многие разработчики возможно захотят их изменить, но для данного руководства это не является столь существенным. Например введение случайного набора символов для использования в хеш-кодах безопасности.

Если вы использовали Composer при установке, то он позаботился и об этой проблеме за вас. В противном случае вам нужно будет поменять параметр salt в файле config/app.php. Не важно каким будет новое значение, но оно должно быть достаточно длинным, чтобы его нельзя было угадать:

'Security' => [
    'salt' => 'something long and containing lots of different values.',
],

Замечание о mod_rewrite

Иногда пользователи могут столкнуться с проблемами mod_rewrite. К примеру если страница приветствия CakePHP выглядит странно (нет картинок или не подключились стили css). Вероятно это из-за того, что mod_rewrite не работает в вашей системе. Пожалуйста обратитесь к разделу Переопределение URL для решения этой проблемы.

Теперь вы можете продолжить перейдя во вторую часть руководства Пример создания блога - Часть 2, чтобы начать создавать ваше первое приложение CakePHP.