mepihindeveloper / php-query-string
Component for working with query string
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
pkg:composer/mepihindeveloper/php-query-string
Requires
- php: >=7.4
- mepihindeveloper/php-query-param: ^1.0
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.0.0
- codeception/module-phpbrowser: ^1.0.0
README
Компонент для работы со строкой запроса. Основной функционал направлен на формирование строки запроса посредством реализации шаблона проектирования "Строитель".
Строка запроса - то, что находится в URI после ?.
Структура
src/
--- exceptions/
------ QueryStringNotFoundException.php
--- interfaces/
------ QueryStringInterface.php
--- QueryString.php
--- QueryStringAbstract.php
--- QueryStringBuilder.php
В директории interfaces хранятся необходимые интерфейсы, которые необходимо имплементировать в при реализации
собственного класса QueryString. Класс QueryString выступает в качестве объекта строки запроса.
В директории exceptions хранятся необходимые исключения. Исключение QueryStringNotFoundException необходимо
для идентификации ошибки отсутствия необходимых ключей.
Класс QueryString реализует саму строку запроса. Собственные классы параметры должны наследоваться от класса QueryString.
Класс QueryStringAbstract реализует общую логику для всех строк запроса. В данном случае, хранит в себе необходимые свойства объектов.
Класс QueryStringBuilder реализует логику формирования объекта класса QueryString.
Примерная реализация формирования параметра:
<?php declare(strict_types = 1); use mepihindeveloper\components\query\param\ParamBuilder; use mepihindeveloper\components\query\QueryStringBuilder; error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); require_once 'vendor/autoload.php'; $uri = 'foo://example.com:8042/over/there?name=ferret&a[]=11&a[]=22#nose'; $query = (new QueryStringBuilder())->setQueryDataByUri($uri)->build(); $query2 = (new QueryStringBuilder())->setParams([ (new ParamBuilder())->setName('name')->setValue('ferret')->build(), (new ParamBuilder())->setName('a')->setValue([11, 22])->build(), ])->setFragment('nose')->build();
Доступные методы
QueryStringInterface
| Метод | Аргументы | Возвращаемые данные | Исключения | Описание |
|---|---|---|---|---|
| get(?string $key = null) | Ключ (название) параметра | Param|Param[] Возвращает объект или массив объектов класса Param. Param класс возвращается по умолчанию, но, можно реализовать свой класс, наследующийся от Param | QueryStringNotFoundException | Получает параметр(ы). Если ключ не задан, то получает все параметры |
| getFragment() | string|null Возвращает строку фрагмента строки запроса или NULL в случае его отсутствия | Получает фрагмент из строки запроса (https://www.ietf.org/rfc/rfc3986.txt) | ||
| toString() | string Возвращает строку запроса с параметрами | Формирует строку запроса |
QueryStringBuilder
| Метод | Аргументы | Возвращаемые данные | Исключения | Описание |
|---|---|---|---|---|
| __construct(string $queryString = QueryString::class, string $param = Param::class) | Класс объекта QueryString. Реализуется через Object::class. Класс объекта Param. Реализуется через Object::class | |||
| setParam(ParamInterface $param) | Объект параметра | QueryStringBuilder | Устанавливает параметр | |
| setParams(array $params) | ParamInterface[] $params Массив объектов параметров | QueryStringBuilder | Устанавливает параметры массива объектов ParamInterface | |
| setParamsArray(array $params) | Массив параметров | QueryStringBuilder | QueryStringNotFoundException|ParamDataException | Устанавливает параметры и фрагмент из переданной строки |
| setQueryDataByUri(string $uri) | URI | QueryStringBuilder | QueryStringNotFoundException|ParamDataException | Устанавливает параметры и фрагмент из переданной строки |
| setFragment(string $fragment) | Фрагмент | QueryStringBuilder | Устанавливает фрагмент запроса (https://www.ietf.org/rfc/rfc3986.txt) | |
| build() | QueryStringInterface | Формирует объект QueryString. Может быть изменен в конструкторе класса |
Контакты
Вы можете связаться со мной в социальной сети ВКонтакте: ВКонтакте: Максим Епихин
Если удобно писать на почту, то можете воспользоваться этим адресом: mepihindeveloper@gmail.com
Мой канал на YouTube, который посвящен разработке веб и игровых проектов: YouTube: Максим Епихин
Поддержать меня можно переводом на Яндекс.Деньги: Денежный перевод