gzhegow / support
Support libraries
1.6.21
2022-08-31 21:16 UTC
Requires
- php: ^7.3|^8.0
- ext-bcmath: *
- ext-curl: *
- ext-fileinfo: *
- ext-json: *
Requires (Dev)
- ext-mbstring: *
- doctrine/inflector: ^2.0
- monolog/monolog: ^2.0
- nette/php-generator: ^3.0
- nikic/php-parser: ^4.0
- phpunit/phpunit: ^9.0
- psr/cache: ^1.0
- psr/container: ^2.0
- psr/log: ^1.1
- symfony/cache: ^5.0
- symfony/string: ~5.0
- symfony/translation-contracts: ^2.0
- symfony/var-dumper: ^5.0
- dev-main
- 1.6.21
- 1.6.20
- 1.6.19
- 1.6.18
- 1.6.17
- 1.6.16
- 1.6.15
- 1.6.14
- 1.6.13
- 1.6.12
- 1.6.11
- 1.6.10
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1.5
- 1.6.1.4
- 1.6.1.3
- 1.6.1.2
- 1.6.1.1
- 1.6.1
- 1.6.0.16
- 1.6.0.15
- 1.6.0.14
- 1.6.0.13
- 1.6.0.12
- 1.6.0.11
- 1.6.0.9
- 1.6.0.8
- 1.6.0.7
- 1.6.0.6
- 1.6.0.5
- 1.6.0.4
- 1.6.0.3
- 1.6.0.2
- 1.6.0.1
- 1.6.0
- 1.5.73
- 1.5.72
- 1.5.71
- 1.5.70
- 1.5.69
- 1.5.68
- 1.5.67
- 1.5.66
- 1.5.65
- 1.5.64
- 1.5.63
- 1.5.62
- 1.5.61
- 1.5.60
- 1.5.59
- 1.5.58
- 1.5.57
- 1.5.56
- 1.5.55
- 1.5.54
- 1.5.53
- 1.5.52
- 1.5.51
- 1.5.50
- 1.5.49
- 1.5.48
- 1.5.47
- 1.5.46
- 1.5.45
- 1.5.44
- 1.5.43
- 1.5.42
- 1.5.41
- 1.5.40
- 1.5.39
- 1.5.38
- 1.5.37
- 1.5.36
- 1.5.35
- 1.5.34
- 1.5.33
- 1.5.32
- 1.5.31
- 1.5.30
- 1.5.29
- 1.5.28
- 1.5.27
- 1.5.26
- 1.5.25
- 1.5.24
- 1.5.23
- 1.5.22
- 1.5.21
- 1.5.20
- 1.5.19
- 1.5.18
- 1.5.17
- 1.5.16
- 1.5.15
- 1.5.14
- 1.5.13
- 1.5.12
- 1.5.11
- 1.5.10
- 1.5.9
- 1.5.8
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.5.0-beta
- 1.4.3
- 1.4.2
- 1.4.1.1
- 1.4.0
- 1.3.15
- 1.3.14
- 1.3.13
- 1.3.12
- 1.3.11
- 1.3.10
- 1.3.9
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- dev-master
This package is auto-updated.
Last update: 2024-03-29 04:45:33 UTC
README
Библиотека вспомогательных функций
Хочу предупредить. На текущем этапе я не использую семантический контроль версий. Пожалуйста, если вы нашли библиотеку рабочей - фиксируйте конкретную версию в composer.json. Библиотека на текущий момент претерпевает изменения едва ли не каждую неделю. Она по большей части никому не нужна, поэтому я меняю её как хочу. Если она кому-то понравится - я готов перейти на семантическое обновление "один раз в месяц" для минорной и раз в 3 месяца для мажорной версии.
- XArr.php
умеет делать с массивами то, что вы очень хотели, но его там не было.
обход в глубину с получением пути, получение значения по дот-нотации, превращение в список чего угодно, unique с сохранением ключей, улучшенный мерж ключей-значений и тд.
- XCache.php
единый сервис для кешей Psr\CacheItemPool. Теперь банановый. Умеет в отложенную инициализацию и поддерживает возможность обернуть самого себя в качестве кеша.
- XCalendar.php
умеет работать с датами так, чтобы от этого не плеваться.
Сравнивать, добавлять, превращать в дату инты и флоаты, парсить таймзону из текста, превращать иммутаблы в неиммутаблы и вообще умный.
- XCli.php
умеет средствами OS удалять папку, создавать zip / tar.gz, умеет переспрашивать о том, что файл уже есть, работает с многострочным вводом и позволяет делать паузы в консоли с запросом нажатия Enter, чтобы пошагово работать с трейс-роутами
- XCmp.php
умеет сравнивать приводя типы к нужным, работает в связке с XCriteria, примерно как делают php-функции strcasecmp и тд. По большей части нужен для удобной сортировки чего-угодно
- XCriteria.php
умеет проверять массив с помощью критерия (в будущем доделаю возможность создавать критерий в виде запроса $query->where()->satisfy($array))
Создавался, чтобы строить умный фильтр на сайте, где требуется поиск, и потом объектом-фильтром передавать его в репозитории
- XCurl.php
умеет клонировать curl ресурсы, задавать умолчания, и создавать новые при помощи $curl->get(url, data) вместо каких-то там опций и тд. А еще умеет в multicurl в одну строку, умеет делать walkMulti() обходя каждый результат и позволяя его повторить, если возникла ошибка, и да, сделает это в мульти, целой пачкой. В общем GuzzleHttp снова выбросить на помойку.
- XDebug.php
умеет выводить в виде текста любой тип данных, работать с сообщениями и аргументами, генерировать аккуратный стек-трейс для лога
- XEnv.php
простенький класс исправляющий ошибки getenv()/putenv() на разных окружениях, связанный с регистром символов
1) в Windows env считаются non-case-sensitive, хотя окружение Apache/Nginx может быть скомпилировано/настроено совершенно непредсказуемо, тогда как в Unix оно строго caseSensitive
2) Интересно, что getenv() работает как caseInsensitive в Windows, а вот putenv() почему-то - нет, то есть установив Path и PATH будет возвращен последний указанный, при этом замены не происходит, и они в массиве оба
3) функция getenv() имеет флажок $localOnly, который должен возвращать ENV на начало скрипта без учета изменений, выполненных в его процеессе. Но иногда она просто не работает
4) кастомные парсеры и загрузчики env из файла, такие как symfony/dotenv часто меняют суперглобальную $_ENV не затрагивая putenv(), поэтому нужна функция, которая проверит и там и там и она есть
5) позволяет получить разницу между переменными до скрипта и после, чтобы, например, вернуть как было
- XFilter.php
класс, который проходится по всем другим в поисках функций ->filter<что-то>($var) и превращает их в три метода -> filter()/is()/assert()
Первый возвращает null или исходное, второй всегда bool, третий бросает исключение с указанным текстом или исключение по-умолчанию. Удобно, когда валидатора под рукой нет.
- XFormat.php
форматирует размер файла в человеческий формат и обратно, умеет делать sqlLikeEscape, чистит комменты из кривого json, если сделать file_get_contents('data.js') и ещё кое-какие мелочи
- XFs.php
работает с файловой системой, строит и соединяет пути, убеждается что они верные, гарантирует один разделитель между папками, умеет в мощный рекурсивный удалятель папки на генераторе, чтобы спрашивать "а надо удалять или не надо" и иметь возможность удалить папку рекурсивно, но частично.
- XItertools.php
представляет основные функции комбинаторики range/inverse/product/permutations/combinations, работает с последовательностями и всегда возвращает генератор
реализации взяты из Python, а сами функции нужны когда речь заходит о битовых масках, сложных "если-то", "всех возможных пересечениях букв" и тд.
- XLoader.php
работает с неймспейсами, удобно слепляет PSR-4 пути к папкам с неймспейсами ничего не теряя, позволяет считывать из PHP кода классы, трейты, интерфейсы, use, чтобы потом использовать генератор кода.
- XLogger.php
единый сервис для кешей Psr\LoggerInterface. Теперь банановый. Умеет в отложенную инициализацию и поддерживает возможность обернуть самого себя в качестве логгера, а еще позволяет передавать в качестве сообщения любой тип данных (массив например) и аккуратно его выведет.
- XMath.php
реализует несколько математических функций и почти всю bc() логику из PHP с тем условием, что преобразование из числа или другого объекта в строковое число производится один раз и далее работает с ValueObject, там ещё реализован функция-эквалайзер, когда нужно тянуть за один рычажок, и чтоб остальные равномерно перемещелись уступая часть суммы для того, что тянем
- XNet.php
получает ip/useragent, содержит константы на HTTP методы и позволяет проверять айпишник в маске подсети. Когда-то был частью XCurl, потом положил отдельно
- XNum.php
в основном позволяет фильтровать числа и делать из массива чисел списки по типам. например, если нужно разбить массив на инты и флоаты - две строки и флоаты там, а инты здесь, и вообще позволяет работать с числами удобнее, можно вернуть преобразованные к числу, а можно оставить в виде строки. осторожнее с плавающей точкой!
- XPath.php
модуль работы с путями, контроллирующий число разделителей, слепляющий, разбивающий и позволяющий получать пути по аналогии dirname(file)/basename(file), только поддерживает любое число разделителей
исправить путь d:\hello/world.foo/bar\test/ в правильный или сделать это неймспейсом PSR4? да запросто.
- XPhp.php
добавляет несколько полезных функций, таких как kwargs() из Python, overload() для перегрузки параметров и их порядка, позволяет проверять инстанс на соответствие "одного из классов" или проверять выходной тип методов-факторок
- XProf.php
очень простой класс для удобного вывода затраченного на код времени, основан на microtime(true) просто делает это по категориям и одной строкой
- XStr.php
класс реализующий два десятка недостающих в PHP строковых методов в том числе explode/implode recursive, join, untrim, crop, str_replace с поддержкой лимита и всю multibyte логику, кроме того умеет в slugify()/pluralize()/singularize() применяя доктрину или симфони за источник знаний (если те установлены), если нет - вежливо предложит установить, а не свалится в "файла нету" на этапе composer/autoload
- XUri.php
класс работающий со ссылками и позволяющий их сравнивать по регулярке или по parse_url(), делать их абсолютными или относительными и вообще полезно, когда работаешь с SEO продвижением