Skip to content

dimaxz/frameworkless

Repository files navigation

Frameworkless

Scrutinizer Code Quality

Каркас приложения с минимальным набором популярных библиотек

Почему?

Некоторые фрейморки такие как Symfony или Laravel, загоняют разработчиков в жесткие рамки, дают меньше свободы чем хотелось бы. Данный каркас может стать отправной точкой для тех кто хочет построить свою архитектуру приложения.

Что подключаем?

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

nikic/fast-route Популярная библиотека маршрутизации Slim.
filp/whoops Впечатляюще потрясающий обработчик ошибок.
symfony/http-foundation Обработка запросов и возврата ответа.
league/container Популярная библиотека для инъекции зависимостей
twig/twig Надежный шаблонизатор.
vlucas/phpdotenv Используем локальные переменные вне хранилища
propel/propel Propel2 мощная и шустрая ОРМ.
maximebf/debugbar Панель отладки, интеграция с Propel2 и Monolog.
fzaninotto/faker Генератор тестовых данных с интеграцией с Propel2.
monolog/monolog Библиотека логирования с поддержкой различных хранилищ.

Getting started

I've included a Vagrantfile which should make getting setup extremely simple. I assume composer is installed.

Step 1. Install Vagrant
Step 2. Clone this repository
Step 3. cd into the repository
Step 3. composer install
Step 4. cp .env.example .env
Step 5. vagrant up

From here, you should be able to browse to http://localhost:8080/. The website is served with NGINX and PHP 7.

Batteries not included

I've intentionally made this project as simplistic as possible. A lot of things are left up to you to design and implement. On the plus side, you won't have to remove much boilerplate.

Below you will find instructions on how to implement a few things, feel free to contribute more examples :).

PDO (database)

Edit bootstrap/app.php and add the following:

$container->add('PDO')
    ->withArgument(getenv('DB_CONN'))
    ->withArgument(getenv('DB_USER'))
    ->withArgument(getenv('DB_PASS'));

You will also need to add some values to your .env

# Database access
MODE=dev
DB_HOST=localhost:3306
DB_NAME=frameworkless
DB_USER=fwl_user
DB_PASS=hopefullysecure

Now, from a controller:

    private $pdo;
    
    public function __construct(PDO $pdo)
    {
        $this->pdo = $pdo;
    }
    
    public function get()
    {
        $handle = $this->pdo->prepare('SELECT * FROM `todos`');
        $handle->execute();
        return new JsonResponse($handle->fetchAll(PDO::FETCH_ASSOC));
    }

You will also need to add some values to your .env

# Database access
DB_CONN=mysql:host=127.0.0.1;dbname=frameworkless;charset=utf8
DB_USER=fwl_user
DB_PASS=hopefullysecure

###Propel2 (ORM)

Step 1. $ export cat .env
Step 2. $ app/command install

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published