Создание и запуск проекта CakePHP
Что такое CakePHP?
CakePHP — это открытый PHP-фреймворк для веба, разработанный для помощи разработчикам в создании веб-приложений быстро. Он основан на архитектуре MVC (Model-View-Controller) и предоставляет мощный набор инструментов, упрощающий выполнение часто встречающихся задач разработки, таких как взаимодействие с базой данных, обработка форм, аутентификация и управление сессиями.
Ключевые особенности и преимущества CakePHP
- Быстрая разработка: Предлагает инструменты генерации кода, которые помогают разработчикам быстро создавать общие структуры кода.
- Гибкий и мощный ORM: Встроенный уровень ORM (Object-Relational Mapping) упрощает операции с базой данных.
- Безопасность: Встроенные функции безопасности, такие как валидация ввода, защита от CSRF и предотвращение SQL-инъекций.
- Поддержка сообщества: Активное сообщество и богатая экосистема плагинов.
- Хорошая документация: Предоставляет обширную документацию и учебные материалы для быстрого старта разработчиков.
CakePHP подходит для проектов разного масштаба, от небольших приложений до больших корпоративных систем, помогая разработчикам быстро создавать качественные веб-приложения.
Создание и запуск проекта CakePHP с помощью ServBay
В этой статье мы будем использовать окружение PHP, предоставляемое ServBay, для создания и запуска проекта CakePHP. Мы будем использовать функцию "Host" от ServBay для настройки веб-сервера и конфигурации проекта для доступа с использованием простых настроек.
Внимание: если вы использовали NGINX или Apache ранее
ServBay использует Caddy в качестве веб-сервера по умолчанию. Существуют некоторые ключевые изменения, которые должны быть приняты во внимание пользователями, переходящими с NGINX и Apache на ServBay:
Конфигурация Caddy
ServBay поставляется с предустановленным и предварительно настроенным Caddy. Разработчикам нужно только управлять сайтами через функцию "Host" от ServBay, не редактируя конфигурационный файл Caddy вручную.
Правила переписывания и .htaccess
В NGINX и Apache разработчики обычно пишут свои собственные правила переписывания и файлы .htaccess для обработки переписывания URL и других конфигураций. Однако ServBay уже предоставляет оптимизированные правила для Caddy "из коробки", поэтому разработчикам не нужно писать эти правила, если нет особых требований.
Узнать больше
Для получения дополнительной информации ознакомьтесь с Перенаправление и htaccess, Как перенести сайт Apache на ServBay и Как перенести сайт NGINX на ServBay.
Создание проекта CakePHP
TIP
ServBay рекомендует разработчикам размещать свои сайты в каталоге /Applications/ServBay/www
для облегчения управления.
Установка Composer
ServBay поставляется с предустановленным Composer, поэтому установка отдельно не требуется.
Создание проекта CakePHP
Используйте Composer для создания нового проекта CakePHP:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4Вход в каталог проекта
Перейдите в созданный каталог проекта CakePHP:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Первоначальная конфигурация
Конфигурация переменных окружения
Настройте информацию о соединении с базой данных и другие переменные окружения в файле
config/app_local.php
. Убедитесь, что следующие настройки установлены правильно:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
Настройка веб-сервера
Используйте функцию "Host" от ServBay для доступа к проекту CakePHP через веб-сервер. В настройках Host от ServBay добавьте новый хост:
- Имя:
My First CakePHP Dev Site
- Домен:
servbay-cakephp-test.local
- Тип веб-сайта:
PHP
- Версия PHP: Выберите
8.3
- Корневой каталог веб-сайта:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Для подробных шагов настройки ознакомьтесь с Добавление вашего первого сайта.
Добавление примерного кода
Добавьте следующий код в файл config/routes.php
для вывода "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Добавьте следующий код в файл src/Controller/PagesController.php
:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
Доступ к веб-сайту
Откройте браузер и перейдите по адресу https://servbay-cakephp-test.local
, чтобы увидеть страницу с выводом Hello ServBay!
.
Пример с NoSQL базами данных
Пример с Memcached
Установка расширения Memcached
Расширение Memcached уже предустановлено в ServBay, поэтому дополнительная установка не требуется.
Настройка Memcached
Настройте информацию о соединении Memcached в файле
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Настройка маршрутов
Добавьте следующий код в файл
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Использование Memcached
Используйте кэш в контроллере:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Откройте браузер и перейдите по адресу
https://servbay-cakephp-test.local/memcached
Пример с Redis
Установка расширения Redis
Расширение Redis уже предустановлено в ServBay, поэтому дополнительная установка не требуется.
Настройка Redis
Настройте информацию о соединении Redis в файле
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Настройка маршрутов
Добавьте следующий код в файл
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Использование Redis
Используйте кэш в контроллере:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Откройте браузер и перейдите по адресу
https://servbay-cakephp-test.local/redis
Пример с реляционными базами данных
Создание схемы базы данных и файлов миграций
Создание файлов миграций
Используйте инструмент Bake от CakePHP для создания файлов миграций:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Запуск миграций
Используйте команды CakePHP для выполнения миграций и создания таблиц базы данных:
bashbin/cake migrations migrate
1
Пример с MySQL
Настройка MySQL
Настройте информацию о соединении с MySQL в файле
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9Настройка маршрутов
Добавьте следующий код в файл
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Добавление таблицы пользователей
Добавьте следующий код в файл
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Добавление данных пользователя
Добавьте данные пользователя в контроллере:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Откройте браузер и перейдите по адресу
https://servbay-cakephp-test.local/mysql-add
иhttps://servbay-cakephp-test.local/mysql
Пример с PostgreSQL
Настройка PostgreSQL
Настройте информацию о соединении с PostgreSQL в файле
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10Настройка маршрутов
Добавьте следующий код в файл
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Добавление таблицы пользователей
Добавьте следующий код в файл
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Добавление данных пользователя
Добавьте данные пользователя в контроллере:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Откройте браузер и перейдите по адресу
https://servbay-cakephp-test.local/pgsql-add
иhttps://servbay-cakephp-test.local/pgsql
Следуя вышеописанным шагам, вы успешно создали и запустили проект CakePHP, использовали функции ServBay для управления и доступа к вашему проекту, а также подключились и выполнили запросы к различным базам данных.