Создание и запуск проекта ThinkPHP 8
Что такое ThinkPHP?
ThinkPHP — это открытая PHP веб-фреймворк, созданная китайскими разработчиками. Она стремится предоставить разработчикам удобный и эффективный набор инструментов для построения современных веб-приложений. ThinkPHP предлагает множество функций, таких как маршрутизация, сессии, кэширование, аутентификация и многое другое, упрощая повседневные задачи веб-разработки.
Основные особенности и преимущества ThinkPHP
- Простота и эффективность: Синтаксис ThinkPHP прост и эффективен, что делает код более читаемым и поддерживаемым.
- Богатый набор функций: Включает маршрутизацию, аутентификацию, управление сессиями и кэширование, значительно упрощая разработку.
- Мощный ORM: ThinkPHP предоставляет мощные инструменты для работы с базами данных, облегчая выполнение операций с БД.
- Модульный дизайн: Благодаря менеджеру пакетов Composer легко интегрировать сторонние библиотеки и расширения.
- Сильная поддержка сообщества: Имеет большую разработческую сообщество и богатую экосистему.
ThinkPHP поможет разработчикам быстро создавать высококачественные веб-приложения и API, подходящие для проектов любого масштаба — от небольших приложений до крупных корпоративных систем.
Создание и запуск проекта ThinkPHP 8 с помощью ServBay
В этой статье мы создадим и запустим проект ThinkPHP 8, используя PHP окружение, предоставляемое ServBay. Мы воспользуемся функцией хостинга от ServBay для настройки веб-сервера и доступ к проекту с минимальной конфигурацией.
Внимание: если вы ранее использовали NGINX или Apache
По умолчанию, ServBay использует Caddy в качестве веб-сервера. Для тех, кто переходит с NGINX или Apache на ServBay, следует учесть некоторые важные изменения:
Конфигурация Caddy
ServBay включает Caddy с преднастроенной конфигурацией, оптимизированной и протестированной. Вам нужно только управлять сайтами через функцию хостинга от ServBay без необходимости вручную изменять конфигурационные файлы Caddy.
Правила переадресации и .htaccess
В NGINX и Apache разработчики обычно сами пишут правила переадресации и файлы .htaccess для обработки URL-переписывания и других настроек. Однако, с ServBay конфигурационные правила Caddy преднастроены, так что разработчикам не нужно их писать самостоятельно, если нет особых требований.
Узнать больше
Подробнее об этом см. Rewrite и .htaccess, Как мигрировать сайт с Apache на ServBay, Как мигрировать сайт с NGINX на ServBay.
Создание проекта ThinkPHP
TIP
ServBay рекомендует размещать сайты в директории /Applications/ServBay/www
для удобного управления.
Установка Composer
ServBay поставляется с предустановленным Composer, так что не нужно устанавливать его отдельно.
Создание проекта ThinkPHP
Используйте Composer для создания нового проекта ThinkPHP:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app
1
2Вход в директорию проекта
Перейдите в директорию новосозданного проекта ThinkPHP:
bashcd /Applications/ServBay/www/servbay-thinkphp-app
1
Инициализация настройки
Настройка переменных среды
Настройте информацию о подключении к БД и другие переменные среды в файле
config/database.php
. Убедитесь, что следующая конфигурация установлена корректно:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6
Настройка веб-сервера
DANGER
Правила переадресации ThinkPHP требуют специальных настроек.
С помощью функции хостинга ServBay настройте веб-сервер для доступа к проекту ThinkPHP. В настройках хостинга ServBay добавьте новый хост:
- Имя:
My First ThinkPHP Dev Site
- Домен:
servbay-thinkphp-test.local
Затем щелкните Настройка по умолчанию
в правом верхнем углу и введите следующее:
encode zstd gzip
import set-log servbay-thinkphp-test.local
tls internal
@canonicalPath {
file {
try_files {path}/index.php
}
not path */
}
redir @canonicalPath {path}/ 308
root * /Applications/ServBay/www/servbay-thinkphp-app/public
route {
try_files {path} {path}/ /index.php?s={path}&{query}
php_fastcgi unix//Applications/ServBay/tmp/php-cgi-8.3.sock
}
file_server
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TIP
Если необходима другая версия PHP, замените php-cgi-8.3.sock
на соответствующую версию PHP. Также убедитесь, что set-log
соответствует домену сайта.
Подробные настройки смотрите в добавлении первого сайта.
Добавление примера кода
Добавьте следующий код в файл route/app.php
, чтобы вывести "Hello ServBay!":
Route::get('servbay', function () {
return 'Hello ServBay!';
});
2
3
Доступ к сайту
Откройте браузер и перейдите на https://servbay-thinkphp-test.local/servbay
, вы увидите сообщение Hello ServBay!
.
Пример использования NoSQL баз данных
Пример Memcached
Установка расширения Memcached
В ServBay расширение Memcached уже предустановлено, так что дополнительная установка не требуется.
Настройка Memcached
Настройте информацию о подключении Memcached в файле
config/cache.php
:php'type' => 'memcached', 'host' => '127.0.0.1',
1
2Использование Memcached
Используйте кэширование в контроллере:
phpuse think\facade\Cache; Route::get('/memcached', function () { Cache::set('key', 'value', 600); return Cache::get('key'); });
1
2
3
4
5
6
Пример Redis
Установка расширения Redis
В ServBay расширение Redis уже предустановлено, так что дополнительная установка не требуется.
Настройка Redis
Настройте информацию о подключении Redis в файле
config/cache.php
:php'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '',
1
2
3
4Использование Redis
Используйте кэширование в контроллере:
phpuse think\facade\Cache; Route::get('/redis', function () { Cache::set('key', 'value'); return Cache::get('key'); });
1
2
3
4
5
6
Пример использования реляционных баз данных
Создание структуры базы данных и миграционных файлов
Установка инструментов для миграции БД
Перед использованием инструментов для миграции БД ThinkPHP, установите их:
bashcomposer require topthink/think-migration
1Создание миграционного файла
Используйте командную строку ThinkPHP для создания миграционного файла:
bashphp think migrate:create CreateUserTable
1Редактирование миграционного файла
Найдите новый миграционный файл в каталоге
database/migrations
и отредактируйте его для определения структуры таблицы:phppublic function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); }
1
2
3
4
5
6
7
8
9Выполнение миграции
Используйте командную строку ThinkPHP для выполнения миграции и создания таблицы:
bashphp think migrate:run
1
Пример MySQL
Настройка MySQL
Настройте информацию о подключении MySQL в файле
config/database.php
:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6Ввод данных пользователя
Введите данные пользователя в контроллере:
phpuse think\Db; Route::get('/mysql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9Использование MySQL
Вызовите данные из базы в контроллере:
phpuse think\Db; Route::get('/mysql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
Пример PostgreSQL
Настройка PostgreSQL
Настройте информацию о подключении PostgreSQL в файле
config/database.php
:php'type' => 'pgsql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '5432',
1
2
3
4
5
6Ввод данных пользователя
Введите данные пользователя в контроллере:
phpuse think\Db; Route::get('/pgsql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9Использование PostgreSQL
Вызовите данные из базы в контроллере:
phpuse think\Db; Route::get('/pgsql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
Следуя данным шагам, вы успешно создадите и запустите проект ThinkPHP 8, используя функции, предоставляемые ServBay для управления и доступа к вашему проекту, с подключением различных баз данных и вызовом данных.