PHPackages                             tischmann/atlantis - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. tischmann/atlantis

ActiveFramework[Framework](/categories/framework)

tischmann/atlantis
==================

Simple MVC framework with CMS functionality

01PHP

Since Oct 31Pushed 1y ago2 watchersCompare

[ Source](https://github.com/tischmann/atlantis)[ Packagist](https://packagist.org/packages/tischmann/atlantis)[ RSS](/packages/tischmann-atlantis/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)DependenciesVersions (1)Used By (0)

Atlantis
========

[](#atlantis)

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 используется метод: {{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}}.

Регистр переменных имеет значение.

Пример:

```
{{env=APP_TITLE}}
```

#### Локализация

[](#локализация)

Для локализации используется метод: {{lang=key\_name}}

Пример:

```
{{lang=hello_world}}
```

Локализации хранятся в директории /locales.

Каждая локализация хранится в отдельном файле с названием локали и расширением .php.

Наприер: /locales/ru.php - русская локализация.

Файлы локализации возвращают массив с ключами и значениями.

Ключи приводятся к нижнему регистру и могут содержать символы: a-z, 0-9, \_.

Пример:

```
