mepihindeveloper / php-query-string
Component for working with 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
QueryStringBuilder
Контакты
Вы можете связаться со мной в социальной сети ВКонтакте: ВКонтакте: Максим Епихин
Если удобно писать на почту, то можете воспользоваться этим адресом: mepihindeveloper@gmail.com
Мой канал на YouTube, который посвящен разработке веб и игровых проектов: YouTube: Максим Епихин
Поддержать меня можно переводом на Яндекс.Деньги: Денежный перевод