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

OSCHINA-MIRROR/sofical-restphp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.en.md

Добро пожаловать в RestPHP, текущая версия 3.1.0.

Особенности RestPHP:

  • Поддержка параметров пути, таких как /users/{userId} или /users/{userId}/orders/{orderId}.
  • Поддержка АОП (аспектно-ориентированного программирования) с помощью @Aspect, что позволяет быстро разрабатывать логику нарезки.
  • Поддерживает различные методы HTTP, обработку и реагирование на запросы сообщений для форм Form, JSON и XML.
  • Поддержка многоязычных настроек.
  • Поддержка проверки аннотаций форм.

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

  1. Клонируйте этот проект на свой локальный компьютер и используйте команду composer update для установки зависимостей.
  2. Настройте корневой каталог работающего контейнера на местоположение файла программы входа, например bootstrap. Настройте правила перезаписи URL, чтобы перенаправлять все запросы на первый файл программы входа. Например, конфигурация перезаписи Nginx:
location / {
    index  index.php;
    if (!-e $request_filename) {            
        rewrite ^/(.*)$ /index.php?$1 last;                
    }
}
  1. Выполните следующую команду для создания файла маршрутизации: php BUILD.
  2. Посетите http://localhost, чтобы увидеть эффект.

Инструкция по использованию:

Загрузка файлов PHP

Загрузка файлов происходит автоматически, нет необходимости использовать require или include в логическом коде. Существует две области загрузки файлов: одна — область кода проекта, а другая — область lib, которая обычно используется для кода сторонних плагинов.

Механизм загрузки файлов осуществляется через использование пространств имён и имён классов для автоматического запроса соответствия, поэтому имя класса должно соответствовать имени файла.

Маршрутизатор

Используйте @RequestMapping, параметры: value, method.

Теперь также можно использовать ключевые слова действия аннотации, такие как @Get, @Post, @Put, @Delete, @Patch, без необходимости в параметрах метода.

value В классе и функции оба допустимы, значение может быть одно или несколько, одно при непосредственном написании как: value="/index.html". Более одного при написании как: value=["/", "/index.html", "/index"].

method Глагол HTTP (метод), такой как GET, POST, PUT, DELETE, PATCH, не чувствителен к регистру, рекомендуется использовать верхний регистр.

Пример:

/**
 * Домашняя страница маршрута.
 * @RequestMapping("")
 */
class IndexController {
    /**
     * домашняя страница.
     * @RequestMapping(value=["/", "/index.html", "/index"], method="GET")
     */
    public function index() {
        // поместите сюда свою логику
        echo "hello moto!";
    }
}

Получение часто используемых параметров запроса:

Параметры пути

Параметр пути получается с использованием метода RestHttpRequest::getPathValue(). Примечание: множественная маршрутизация не поддерживает параметры пути.

Доступ к пути /users/97, получение идентификатора пользователя: 97

/**
 * @RequestMapping("/users")
 */
class UserController {
    /**
     * @RequestMapping(value="/{userId}", method="GET")
     */
    public function userInfo() {
        $userId = RestHttpRequest::getGet("userId");
        echo $userId;
    }
}
Параметры строки запроса

Используйте RestHttpRequest:: getGet() или RestHttpRequest::getParameterAsObject(), чтобы получить параметр запроса; используйте RestHttpRequest::getPageParam(), чтобы извлечь объект разбиения на страницы.

RestHttpRequest::getGet() используется для получения одного параметра пути, в то время как RestHttpRequest::getParameterAsObject используется для получения одного или нескольких параметров в виде объекта.

1. Пример использования RestHttpRequest::getGet()

Доступ path/users?Name=Zhang, получите значение параметра name:

/**
 * @RequestMapping("/users")
 */
class UserController {
    /**
     * @RequestMapping(value="", method="GET")
     */
    public function userList() {
        $name = RestHttpRequest::getGet("name");
        echo $name;
    }
}

2. Пример использования RestHttpRequest::getParameterAsObject()

Доступ к пути /users?Name=Zhang&mobile=1360000, извлеките объекты запроса для имени и мобильного телефона.

Определите объект получателя, QueryForm:

final class QueryForm {
    private $_name;
    private $_mobile;
    public function getName() {
        return $this->_name;
    }
    public function setName($name) {
        $this->_name = $name;
    }
    public function getMobile() {
        return $this->_mobile;
    }
    public function
``` ```
setMobile($mobile) {
    $this->_mobile = $mobile;
}
}

В классе UserController используйте метод RestHttpRequest:: getParameterAsObject() для получения объекта QueryForm:

/**
 * @RequestMapping("/users")
 */
class UserController {
    /**
     * @RequestMapping(value="", method="GET")
     */
    public function userList() {
        $queryForm = RestHttpRequest::getParameterAsObject(new QueryForm());
        var_export($queryForm);
    }
}

Параметры тела

Параметр тела получается с помощью RestHttpRequest::getBody().

Например, чтобы получить содержимое тела: {"username": "Xiaohong", "mobile": "13800000000", "age": "18"}

Определите объект-получатель, UserForm:

final class UserForm {
    private $_name;
    private $_mobile;
    private $_age;
    public function getName() {
        return $this->_name;
    }
    public function setName($name) {
        $this-_name = $name;
    }
    public function getMobile() {
        return $this->_mobile;
    }
    public function setMobile($mobile) {
        $this-_mobile = $mobile;
    }
    public function getAge() {
        return $this->_age;
    }
    public function setAge($age) {
        $this->_age = $age;
    }
}

В UserController используйте метод RestHttpRequest:: getBody() для извлечения объекта UserForm или извлечения его в виде массива:

/**
 * @RequestMapping("/users")
 */
class UserController {
    /**
     * @RequestMapping(value="", method="POST")
     */
    public function newUser() {
        // Получение в виде объекта
        $userForm = RestHttpRequest::getBody(new UserForm());
        var_export($userForm);
        // Извлечение в виде массива
        $arrUser = RestHttpRequest::getBody();
        var_dump($arrUser);
    }
}

Проверка данных

Фреймворк предоставляет следующие формы аннотаций для проверки:

@Length (min=минимальная длина, max=максимальная длина, message=сообщение об ошибке)

@Notnull (message=сообщение об ошибке)

@Mobile (message=сообщение об ошибке)

@Email (message=сообщение об ошибке)

@Domain (message=сообщение об ошибке)

@Date (format=формат даты, message=сообщение об ошибке)

@Range (min=минимальная длина, max=максимальная длина, message=сообщение об ошибке)

@Int (min=минимальная длина, max=максимальная длина, message=сообщение об ошибке)

@IPv4 (message=сообщение об ошибке)

@IPv6 (message=сообщение об ошибке)

@InArray (value=[дополнительное значение 1 | дополнительное значение 2], message=сообщение об ошибке)

@NotEmpty (message=сообщение об ошибке)

@Customer (method=пользовательский метод проверки, message=подсказка об ошибке)

Пример использования:

Создайте MessageVo:

<?php
namespace classes\controller\api\vo;

/**
 * Class MessageVo
 * @package classes\controller\api\vo
 */
class MessageVo {
    /**
     * 客户名称.
     * @length(min=1,max=20,message=名字输入长度为1~20个字符)
     * @var string.
     */
    private $_name;

    /**
     * 感兴趣的产品.
     * @length(min=1,max=50,message=感兴趣的产品输入长度为1-50个字符)
     * @var string
     */
    private $_product;

    /**
     * 手机号码.
     * @mobile(message=手机号不正确)
     * @var string
     */
    private $_mobile;

    /**
     * 更多说明
     * @length(max=255,message=更多说明长度不能超过255字)
     * @var string
     */
    private $_more;

    /**
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * @param string $name
     */
    public function setName($name)
    {
        $this->_name = $name;
    }

    /**
     * @return string
     */
    public function getProduct()
    {
        return $this->_product;
    }

    /**
     * @param string $product
     */
    public function setProduct($product)
    {
        $this->_product = $product;
    }

    /**
     * @return string
     */
    public function getMobile()
    {
        return $this->_mobile;
    }

    /**
     * @param string $mobile
     */
    public function setMobile($mobile)
    {
        $this->_mobile = $mobile;
    }

    /**
     * @return string
     */
    public function getMore()
    {
        return $this->_more;
    }

    /**
     * @param string $more
     */
    public function setMore($more)
    {
        $this->_more = $more;
    }


}

Использование в MessagesController: ```

getProcessParam()); } /** * @param AopParam $aopParam * @return void */ function after($aopParam) { // TODO: Реализовать метод after(). } } ``` Используя AOP (запустите ссылочный код после сборки, чтобы увидеть эффект): ```php _tpl = new RestTpl(); $this->_tpl->caching = false; } /** * @Get (value = "") * @AopExample(param1="test",param2="test2") * @return void */ public function index() { $this->_tpl->assign('app_name', 'RESTPHP 3.0'); $this->_tpl->display('index.tpl'); } } ``` Документ: https://www.restphp.com

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/sofical-restphp.git
git@api.gitlife.ru:oschina-mirror/sofical-restphp.git
oschina-mirror
sofical-restphp
sofical-restphp
master