Инструкции по установке

Перед установкой Flight необходимо выполнить несколько базовых предварительных требований. А именно, вам понадобится:

  1. Установите PHP на вашей системе
  2. Установите Composer для лучшего опыта разработчика.

Базовая установка

Если вы используете Composer, вы можете выполнить следующую команду:

composer require flightphp/core

Это добавит на вашу систему только основные файлы Flight. Вам нужно будет самостоятельно определить структуру проекта, макет, зависимости, конфигурации, автозагрузку и т.д. Этот метод гарантирует, что никакие другие зависимости, кроме Flight, установлены не будут.

Вы также можете скачать файлы напрямую и распаковать их в вашу веб-директорию.

Базовая установка отлично подходит для обучения, микросервисных API и экспериментов с копированием и вставкой. Для полной структуры приложения, которой одинаково легко будут следовать люди и AI-инструменты для кодирования, используйте рекомендуемый скелет ниже.

Рекомендуемая установка

Настоятельно рекомендуется начинать любой новый проект с приложения flightphp/skeleton. Установка проста как ветерок.

composer create-project flightphp/skeleton my-project/
cd my-project/
composer start
# необязательная демо БД + посты
php runway migrate

Этот шаг настраивает структуру проекта, автозагрузку Composer PSR-4, конфигурацию и такие инструменты, как Tracy, Tracy Extensions и Runway. Он также включает корневой файл AGENTS.md (и локальные копии в app/), чтобы AI-ассистенты работали с той же структурой, что и вы — см. AI и опыт разработчика.

Что даёт скелет

project-root/
├── AGENTS.md              # источник истины для AI / агентов
├── SECURITY.md            # ожидания по безопасности
├── .env.example           # секреты / оверлеи деплоя (копируется в .env)
├── public/index.php       # только веб-вход
├── app/
│   ├── config/            # загрузка, маршруты, сервисы, config_sample.php
│   ├── Controller/        # App\Controller\*  (папка в PascalCase!)
│   ├── Middleware/        # App\Middleware\*
│   ├── Model/             # App\Model\* (ActiveRecord)
│   ├── Utils/             # Config, Env, DatabaseFactory
│   ├── commands/          # команды CLI Runway
│   ├── views/             # шаблоны Twig (*.twig)
│   ├── cache/
│   └── log/
├── migrations/            # SQL-миграции (.sql / .mysql.sql)
└── tests/                 # PHPUnit

Пространства имён соответствуют регистру папок. Composer сопоставляет "App\\": "app/", поэтому:

Путь на диске Пространство имён
app/Controller/HomeController.php App\Controller\HomeController
app/Middleware/… App\Middleware\…
app/Model/… App\Model\…
app/Utils/… App\Utils\…

В Linux app/controller/ не то же самое, что app/Controller/. Автозагрузка чувствительна к регистру — используйте папки в PascalCase, как в скелете. Подробнее: Автозагрузка.

Стандартный стек (новые проекты): представления Twig, SimplePdo + ActiveRecord, Dice с внедрением Engine (предпочтительно без Flight:: внутри классов приложения), опционально SQLite после php runway migrate.

create-project обычно копирует app/config/config_sample.phpconfig.php и .env.example.env, если они присутствуют. Маршруты находятся в app/config/routes.php; сервисы и DI — в app/config/services.php.

Документация ↔ скелет: Эта документация описывает Flight API (часто с короткими примерами Flight::). Скелет определяет структуру приложения. При добавлении кода в app/ следуйте структуре скелета; используйте документацию для названий методов, опций и плагинов.

Настройка вашего веб-сервера

Встроенный веб-сервер PHP

Это самый простой способ начать работу. Вы можете использовать встроенный сервер для запуска вашего приложения и даже использовать SQLite в качестве базы данных (при условии, что sqlite3 установлен в вашей системе), и почти ничего больше не потребуется! Просто выполните следующую команду после установки PHP:

php -S localhost:8000
# или с приложением-скелетом
composer start

Затем откройте браузер и перейдите по адресу http://localhost:8000.

Если вы хотите сделать корневую директорию вашего проекта иной (например, ваш проект находится в ~/myproject, а корневая директория — ~/myproject/public/), вы можете выполнить следующую команду, находясь в директории ~/myproject:

php -S localhost:8000 -t public/
# в приложении-скелете это уже настроено
composer start

Затем откройте браузер и перейдите по адресу http://localhost:8000.

Apache

Убедитесь, что Apache уже установлен в вашей системе. Если нет, поищите в Google, как установить Apache в вашей системе.

Для Apache отредактируйте ваш файл .htaccess, добавив следующее:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

Примечание: Если вам нужно использовать Flight в поддиректории, добавьте строку RewriteBase /subdir/ сразу после RewriteEngine On.

Примечание: Если вы хотите защитить все серверные файлы, например, файл базы данных или файл окружения, добавьте это в ваш файл .htaccess:

RewriteEngine On
RewriteRule ^(.*)$ index.php

Nginx

Убедитесь, что Nginx уже установлен в вашей системе. Если нет, поищите в Google, как установить Nginx в вашей системе.

Для Nginx добавьте следующее в объявление вашего сервера:

server {
  location / {
    try_files $uri $uri/ /index.php;
  }
}

Создайте ваш файл index.php

Если вы выполняете базовую установку, вам понадобится стартовый код.

<?php

// Если вы используете Composer, подключите автозагрузчик.
require 'vendor/autoload.php';
// если вы не используете Composer, загрузите фреймворк напрямую
// require 'flight/Flight.php';

// Затем определите маршрут и назначьте функцию для обработки запроса.
Flight::route('/', function () {
  echo 'hello world!';
});

// Наконец, запустите фреймворк.
Flight::start();

В приложении-скелете публичная точка входа только запускает приложение. Маршруты регистрируются в app/config/routes.php (обычно в виде [App\Controller\…::class, 'method'], чтобы Dice мог внедрять зависимости). Сервисы, Twig, SimplePdo и контейнер настраиваются в app/config/services.php. Такая структура выбрана осознанно, чтобы AI-инструменты и люди редактировали одни и те же места каждый раз.

Установка PHP {#installing-php}

Если в вашей системе уже установлен php, можно пропустить эти инструкции и перейти к разделу загрузки

macOS

Установка PHP с помощью Homebrew

  1. Установите Homebrew (если он ещё не установлен):

    • Откройте Терминал и выполните:
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Установите PHP:

    • Установите последнюю версию:
      brew install php
    • Чтобы установить конкретную версию, например, PHP 8.1:
      brew tap shivammathur/php
      brew install shivammathur/php/php@8.1
  3. Переключение между версиями PHP:

    • Отвяжите текущую версию и привяжите нужную:
      brew unlink php
      brew link --overwrite --force php@8.1
    • Проверьте установленную версию:
      php -v

Windows 10/11

Установка PHP вручную

  1. Загрузите PHP:

    • Посетите PHP для Windows и загрузите последнюю или конкретную версию (например, 7.4, 8.0) в виде zip-файла для не многопоточной (Non-Thread-Safe) сборки.
  2. Распакуйте PHP:

    • Извлеките загруженный zip-файл в C:\php.
  3. Добавьте PHP в системный PATH:

    • Перейдите в Свойства системы > Переменные среды.
    • В разделе Системные переменные найдите Path и нажмите Изменить.
    • Добавьте путь C:\php (или туда, куда вы извлекли PHP).
    • Нажмите ОК, чтобы закрыть все окна.
  4. Настройте PHP:

    • Скопируйте php.ini-development в php.ini.
    • Отредактируйте php.ini для настройки PHP по необходимости (например, укажите extension_dir, включите расширения).
  5. Проверьте установку PHP:

    • Откройте командную строку и выполните:
      php -v

Установка нескольких версий PHP

  1. Повторите описанные выше шаги для каждой версии, помещая каждую в отдельную директорию (например, C:\php7, C:\php8).

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

Ubuntu (20.04, 22.04, etc.)

Установка PHP с помощью apt

  1. Обновите списки пакетов:

    • Откройте Терминал и выполните:
      sudo apt update
  2. Установите PHP:

    • Установите последнюю версию PHP:
      sudo apt install php
    • Чтобы установить конкретную версию, например, PHP 8.1:
      sudo apt install php8.1
  3. Установите дополнительные модули (необязательно):

    • Например, для поддержки MySQL:
      sudo apt install php8.1-mysql
  4. Переключение между версиями PHP:

    • Используйте update-alternatives:
      sudo update-alternatives --set php /usr/bin/php8.1
  5. Проверьте установленную версию:

    • Выполните:
      php -v

Rocky Linux

Установка PHP с помощью yum/dnf

  1. Включите репозиторий EPEL:

    • Откройте Терминал и выполните:
      sudo dnf install epel-release
  2. Установите репозиторий Remi:

    • Выполните:
      sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
      sudo dnf module reset php
  3. Установите PHP:

    • Чтобы установить версию по умолчанию:
      sudo dnf install php
    • Чтобы установить конкретную версию, например, PHP 7.4:
      sudo dnf module install php:remi-7.4
  4. Переключение между версиями PHP:

    • Используйте команду модуля dnf:
      sudo dnf module reset php
      sudo dnf module enable php:remi-8.0
      sudo dnf install php
  5. Проверьте установленную версию:

    • Выполните:
      php -v

Общие примечания

  • Для сред разработки важно настраивать параметры PHP в соответствии с требованиями вашего проекта.
  • При переключении версий PHP убедитесь, что для конкретной версии, которую вы собираетесь использовать, установлены все соответствующие расширения PHP.
  • Перезапустите ваш веб-сервер (Apache, Nginx и т.д.) после переключения версий PHP или обновления конфигураций, чтобы изменения применились.