1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/caoyangmin-phpboot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 9.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 13:26 60dcaa5

PhpBoot

GitHub license Package version Documentation Status Build Status Scrutinizer Code Quality Code Coverage

PhpBoot — это PHP-фреймворк, предназначенный для быстрой разработки RESTful API. Он помогает разработчикам сосредоточиться на бизнес-логике, делегируя фреймворку рутинные задачи, такие как написание документации по интерфейсу, проверка параметров и реализация удалённого вызова кода.

Особенности

PhpBoot предоставляет множество популярных функций, таких как ORM и внедрение зависимостей. Эти функции тщательно разработаны и выбраны (некоторые из них являются сторонним открытым исходным кодом, например PHP-DI), но наиболее заметной особенностью PhpBoot по сравнению с другими фреймворками является:

1. Написание интерфейса в объектно-ориентированном стиле

Вы, вероятно, видели такой код:

// **Не используя** PhpBoot
class BookController {
    public function findBooks(Request $request) {
        $name = $request->get('name');
        $offset = $request->get('offset', 0);
        $limit = $request->get('limit', 10);
        ...
        return new Response(['total' => $total, 'data' => $books]);
    }

    public function createBook(Request $request) ...
}

Многие популярные фреймворки требуют написания такого кода для реализации интерфейсов. Однако проблема этого подхода заключается в том, что входные и выходные данные методов скрыты в реализации, что не соответствует общепринятым принципам кодирования. Если вы предъявляете более высокие требования к коду, вы можете реализовать дополнительный слой Service-интерфейса и просто вызывать его из Controller. Используя PhpBoot, можно определить и реализовать интерфейс более естественным образом. В примере выше, в рамках фреймворка PhpBoot это будет выглядеть так:

/**
 * @path /books/
 */
class Books {
    /**
     * @route GET /
     * @return Book[]
     */
    public function findBooks($name, &$total = null, $offset = 0, $limit = 10) {
        $total = ...
        ...
        return $books;
    }

    /**
    * @route POST /
    * @param Book $book {@bind request.request} bind $book with http body
    * @return string id of created book
    */
    public function createBook(Book $book) {
        $id = ... 
        return $id;
    }
}

Приведённый выше код выполняет те же действия. Можно заметить, что код, написанный с использованием PhpBoot, больше соответствует принципам объектно-ориентированного программирования. Полную версию кода можно увидеть в phpboot-example.

2. Простая поддержка Swagger

Swagger — самый популярный на данный момент фреймворк для документирования интерфейсов. Хотя многие фреймворки могут поддерживать Swagger через расширения, обычно они не требуют большого количества дополнительных комментариев и могут только экспортировать базовую информацию о маршрутах, а не подробные входные и выходные параметры. С помощью PhpBoot можно легко выполнить эту задачу без увеличения дополнительной нагрузки на кодирование. На рисунке ниже показан документ, соответствующий функции findBooks. Для получения дополнительной информации см. документацию и онлайн-демонстрацию.

3. Простое использование распределённой поддержки

С помощью PhpBoot легко создавать распределённые приложения. Приведённый ниже код позволяет легко получить удалённый доступ к интерфейсу Books, показанному в примере выше:

$books = $app->make(RpcProxy::class, [
    'interface' => Books::class,
    'prefix' => 'http://x.x.x.x/'
]);

$books->findBooks(...);

Одновременно можно удобно инициировать параллельные запросы, например:

$res = MultiRpc::run([
    function() use ($service1) {
        return $service1->doSomething();
    },
    function() use ($service2) {
        return $service2->doSomething();
    },
]);

Для получения дополнительной информации ознакомьтесь с документацией.

4. Поддержка IDE

Функция подсказки кода в IDE может значительно упростить работу разработчиков, но многие фреймворки не предоставляют хороших решений в этой области, и вам приходится обращаться к документации или коду, чтобы узнать, как использовать определённую функцию. PhpBoot с самого начала уделяет большое внимание дружественности фреймворка к IDE, стремясь сохранить точные подсказки кода. Например, на приведённом ниже рисунке показано использование DB в PhpStorm:

Можно видеть, что подсказки IDE соответствуют правилам синтаксиса SQL, а не просто перечисляют все команды SQL.

Основные функции

Установка и настройка

  1. Установите Composer (если он уже установлен, этот шаг можно пропустить).

    curl -s http://getcomposer.org/installer | php
  2. Установите PhpBoot.

    composer require "caoym/phpboot"
  3. Загрузите PhpBoot в index.php.

    <?php
    require __DIR__.'/vendor/autoload.php';
    
    $app = \PhpBoot\Application::createByDefault(__DIR__.'/config/config.php');
    $app->loadRoutesFromPath(__DIR__.'/App/Controllers');
    $app->dispatch();

Помощь и документация

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/caoyangmin-phpboot.git
git@api.gitlife.ru:oschina-mirror/caoyangmin-phpboot.git
oschina-mirror
caoyangmin-phpboot
caoyangmin-phpboot
master