tischmann / atlantis
Simple MVC framework with CMS functionality
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:framework
Requires
- php: >=8.2
- ext-curl: *
- ext-intl: *
- ext-json: *
- ext-mbstring: *
- ext-pdo_mysql: *
- ext-session: *
- ext-xml: *
- ext-zlib: *
This package is auto-updated.
Last update: 2024-04-18 05:28:17 UTC
README
Atlantis — это простой и легкий MVC PHP-фреймворк.
Он разработан, чтобы быть простым в использовании и легким в освоении.
Он также спроектирован таким образом, чтобы его можно было легко расширять и настраивать.
Это отличный фреймворк как для новичков, так и для экспертов.
Системные требования
OS: Linux
PHP: 8.2+ (FPM)
MySQL: 8.0+ (Рекомендуется)
Nginx: 1.18.0+
Структура файловой системы
/.env — файл окружения
/.gitignore — файл исключений Git
/README.md — файл описания
/app — директория приложения
/app/Database — директория базы данных
/app/Controllers — директория контроллеров
/app/Models — директория моделей
/app/Views — директория представлений
/bootstrap — директория загрузки
/bootstrap/app.php — файл загрузки приложения
/bootstrap/config.php — файл конфигурации приложения
/bootstrap/require.php — файл зависимостей приложения
/bootstap/routes.php — файл маршрутизации приложения
/src — директория ядра
/lang — директория языков
/public — директория публичных файлов
/public/index.php — файл точки входа
/public/app.js — главный файл JavaScript
/public/pwa.js — файл Progressive Web App
/public/app.css — главный файл CSS
/routes — директория маршрутов
/private.pem - приватный ключ
/public.pem - публичный ключ
Настройка
Настройка окружения
APP_ID — идентификатор приложения (уникальные для каждого приложения)
APP_TIMEZONE — часовой пояс приложения (по умолчанию UTC)
APP_COOKIE_PATH — путь куки (по умолчанию /)
APP_COOKIE_HTTP_ONLY — куки доступны только через HTTP (по умолчанию 1)
APP_USE_ONLY_COOKIES — использовать только куки (по умолчанию 1)
APP_COOKIE_SECURE — использовать защищенные куки (по умолчанию 1)
APP_USE_STRICT_MODE — использовать строгий режим (по умолчанию 1)
APP_COOKIE_SAMESITE — использовать строгий режим куки (по умолчанию Strict)
APP_USE_TRANS_SID — использовать SID в куках (по умолчанию 0)
APP_CACHE_LIMITER — лимитер кэша (по умолчанию nocache)
APP_SID_LENGTH — длина SID (по умолчанию 128)
APP_HASH_FUNCTION — функция хеширования (по умолчанию sha256)
APP_LOCALE — локаль приложения (ru, en, ...)
APP_TITLE — заголовок приложения
APP_DESCR — описание приложения
DB_TYPE — тип базы данны
DB_HOST — хост базы данных
DB_PORT — порт базы данных
DB_NAME — имя базы
DB_CHARSET — кодировка базы данных
DB_USERNAME — пользователь базы данных
DB_PASSWORD — пароль базы данных
MEMCACHED_HOST — хост Memcached
MEMCACHED_PORT — порт Memcached
CSRF защита
Для защиты от CSRF атак используется специальный токен.
Токен генерируется при каждом запросе и хранится в сессии.
Для генерации токена в форме используется шаблон {{csrf}}.
Для вывода значения токена CSRF используется метод: {{csrf-token}}.
Для проверки токенов используется метод:
csrf_verify();
В качестве параметра передается объект запроса.
Метод не возвращает никаких значений, но при несовпадении токенов выбрасывает исключение.
После верификации токенов, они удаляются из сессии.
Роутинг
Роутинг осуществляется в файле /bootstrap/routes.php.
Маршруты задаются в директории /routes в виде файлов с расширением .php.
Пример маршрута
Router::add( new Route( controller: new Controller(), path: 'path', action: 'action', method: 'GET' ) );
Параметры маршрута
Переменные, переданные в маршруте, доступны в контроллере через свойство route, являющеся экземпляром класса Route.
Пример:
class SomeController extends Controller { public function someAction() { $args = $this->route->args(); } }
Параметры запроса
Параметры запроса доступны в контроллере экземпляр класса Request.
Пример:
class SomeController extends Controller { public function someAction() { $request = Request::instance(); $post = $request->post(); $get = $request->get(); $input = $request->input(); $headers = $request->headers(); $request = $request->request(); } }
Шаблонизатор представлений
Шаблоны представлений хранятся в директории /app/Views и имеют расширение .php.
Структура шаблонов
Переменные окружения
Для передачи переменных в шаблон используется метод: {{env=VARIABLE_NAME}}.
Регистр переменных имеет значение.
Пример:
<title>{{env=APP_TITLE}}</title>
Локализация
Для локализации используется метод: {{lang=key_name}}
Пример:
<h1>{{lang=hello_world}}</h1>
Локализации хранятся в директории /locales.
Каждая локализация хранится в отдельном файле с названием локали и расширением .php.
Наприер: /locales/ru.php - русская локализация.
Файлы локализации возвращают массив с ключами и значениями.
Ключи приводятся к нижнему регистру и могут содержать символы: a-z, 0-9, _.
Пример:
<?php return [ 'hello_world' => 'Привет, мир!' ];
Файлов локализации может быть несколько, они будут объединены в один массив.
Пагинация
Для вывода пагинации используется метод: {{pagination}}
Также требуется передать в шаблон переменную с именем pagination, содержащую экземпляр класса Pagination().
Переменные
Для вывода строковых переменных используется метод: {{var_name}}.
Все переменные должны быть переданы в шаблон при объявлении представления.
Пример:
new Template( 'template_name', [ 'var_name' => 'Привет, мир!', ] );
База данных
Структура таблиц
Структура таблиц хранится в папке: /app/Database.
В папке находятся файлы с именами таблиц и расширением .php.
Создание
Для создания таблиц используется команда:
./migrate create
Удаление
Для удаления всех таблиц используется команда:
./migrate remove
Заполнение
Для заполнения таблиц данными используется команда:
./migrate seed