{"id":23181340,"url":"https://github.com/darkfriend/devhelpers","last_synced_at":"2025-06-10T18:37:20.160Z","repository":{"id":56962451,"uuid":"161208775","full_name":"darkfriend/devhelpers","owner":"darkfriend","description":"Хелперы, которые часто бывают полезны в разработке","archived":false,"fork":false,"pushed_at":"2019-11-07T06:38:49.000Z","size":25,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-29T14:13:42.212Z","etag":null,"topics":["dev","helpers","library","php"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darkfriend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-10T17:05:30.000Z","updated_at":"2020-01-13T15:06:16.000Z","dependencies_parsed_at":"2022-08-21T08:20:48.244Z","dependency_job_id":null,"html_url":"https://github.com/darkfriend/devhelpers","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdevhelpers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdevhelpers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdevhelpers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdevhelpers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darkfriend","download_url":"https://codeload.github.com/darkfriend/devhelpers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkfriend%2Fdevhelpers/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259124676,"owners_count":22809004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dev","helpers","library","php"],"created_at":"2024-12-18T08:15:15.934Z","updated_at":"2025-06-10T18:37:20.137Z","avatar_url":"https://github.com/darkfriend.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DevHelpers - классы хелперы, которые часто бывают полезны в разработке\n\n**Структура:**\n* DebugHelper\n    * ```DebugHelper::$mainKey``` - свойство, содержащее имя ключа для $_COOKIE и $_GET\n    * ```DebugHelper::print_pre($o, $die, $show)``` - статичный метод, который выводит всю структуру массива и объекта, с информацией о файле и строке (подробности ниже)\n    * ```DebugHelper::call($func, ...$params)``` - статичный метод, который вызывает переданную функцию только у админа, передавая нужные параметры (подробности ниже)\n    * ```DebugHelper::trace($message, $category='common')``` - статичный метод трессировки (ниже примеры использования)\n  \n* StringHelper\n    * ```StringHelper::htmlspecialchars($val)``` - статичный метод, который делает htmlspecialchars() для строк и массивов\n    * ```StringHelper::htmlspecialchars_decode($val)``` - статичный метод, который делает htmlspecialchars_decode() для строк и массивов\n    * ```StringHelper::generateString($length, $chars)``` - статичный метод, который возвращает сгенерированную строку нужной длины\n    * ```StringHelper::getDeclension($value, $words)``` - статичный метод, который возвращает окончания слов при слонении. _Например: 5 товаров, 1 товар, 3 товара_\n    * ```StringHelper::truncate($string, $length, $suffix = '...', $encoding = null)``` - возвращает обрезанный текст в $length символов\n    * ```StringHelper::truncateWords($string, $count, $suffix = '...')``` - возвращает обрезанный текст в $length слов\n  \n* ArrayHelper\n    * ``ArrayHelper::in_array($needle, $haystack)`` - highload method for search value in array\n    * ``ArrayHelper::isMulti($arr)`` - check array on multiple array\n    * `` ArrayHelper::sortValuesToArray($sourceArray,$orderArray)`` - Sort values array to order array\n    * `` ArrayHelper::sortKeysToArray($sourceArray,$orderArray)`` - Sort keys source array to order array\n  \n* CurlHelper\n    * ```CurlHelper::getInstance($newSession = false, $options = [])``` - return instance CurlHelper\n    * ```CurlHelper::getInstance($newSession = false, $options = [])-\u003erequest($url, $data = [], $method = 'post', $requestType = '', $responseType = 'json')``` - do request to url\n  \n* TypeHelper\n    * ```TypeHelper::toStrictType($value)``` - return $value to strict type\n  \n## DebugHelper::print_pre($o,$die,$show);\n* $o - данные, которые надо вывести\n* $die - прерывать ли после вывода выполнение скрипта (по умолчанию false)\n* $show - выводить всем [или только в определенных случаях] (по умолчанию true)\n\n### Пример\n```php\nuse \\darkfriend\\devhelpers\\DebugHelper;\n$data = [\n    'key1' =\u003e 'value1',\n    'key2' =\u003e 'value2',\n    'key3' =\u003e [\n        'subKey1' =\u003e 'subValue1',\n        'subKey2' =\u003e 'subValue2',\n    ],\n];\nDebugHelper::print_pre($data);\n```\n\n## DebugHelper::call($func,...$params)\n* $func - функция, которую надо вывести\n* $params - параметры которые надо передать\n\n### Пример\n```php\nuse \\darkfriend\\devhelpers\\DebugHelper;\n$data = [\n    'key1' =\u003e 'value1',\n    'key2' =\u003e 'value2',\n    'key3' =\u003e [\n        'subKey1' =\u003e 'subValue1',\n        'subKey2' =\u003e 'subValue2',\n    ],\n];\n\n// способ 1: используя $params\nDebugHelper::call(function($data) {\n  DebugHelper::print_pre($data);\n},$data);\n\n// способ 2: используя use\nDebugHelper::call(function() use ($data) {\n    DebugHelper::print_pre($data);\n});\n```\n## DebugHelper::trace($message,$category)\n* $message - сообщение\n* $category - категория трассировки\n\n### Дополнительные возможности\n\n* поддержка режимов трассировния\n    * TRACE_MODE_REPLACE - режим перезаписи лога\n    * TRACE_MODE_APPEND - режим дополнение лога\n    * TRACE_MODE_SESSION - режим trace-сессии\n* поддержка trace-сессий - каждый запуск в отдельном \n\n\n### Example 1: простая трассировка\n_Задача: Простая запись данных в лог_\n```php\nuse \\darkfriend\\devhelpers\\DebugHelper;\n$array1 = [\n    'key1' =\u003e 'value1',\n    'key2' =\u003e 'value2'\n];\n\n// trace 1\nDebugHelper::trace($array1);\n// итог: запишет $array1 с категорией common.\n\n$array1['key3'] = [\n    'subKey1' =\u003e 'subValue1',\n    'subKey2' =\u003e 'subValue2',\n];\n\n// trace 2\nDebugHelper::trace($array1);\n// итог: допишет в лог обновленный $array1 с категорией common\n```\n\n#### Example 1: FAQ\n\n* _Где лежит файл?_ - путь ``$_SERVER['DOCUMENT_ROOT].'/trace.log'``\n* _Что будет в логе?_ - будет 2 записи переменной $array1. По умолчанию идет запись лога сверху вниз\n* _Какая категория будет?_ - по умолчанию категория \"common\"\n\n### Example 2: каждый запуск в отдельный файл\n_Задача: Мы сохраняем данные и хотим трассировать id-строки и сохраняемые данные_\n\n```php\nuse \\darkfriend\\devhelpers\\DebugHelper;\n\n$id = 1; // идентификатор\n\n// делаем инициализацию\n// $id - ключ trace-session\n// self::TRACE_MODE_SESSION - включаем режим trace-session\nDebugHelper::traceInit($id, DebugHelper::TRACE_MODE_SESSION);\n\n$array1 = [\n    'key1' =\u003e 'value1',\n    'key2' =\u003e 'value2',\n    'key3' =\u003e 'value3'\n];\n\nDebugHelper::trace($array1);\n// итог: запишет $array1 с категорией common.\n\n$array1['key3'] = [\n    'subKey1' =\u003e 'subValue1',\n    'subKey2' =\u003e 'subValue2',\n];\n\n// trace 2\nDebugHelper::trace($array1);\n// итог: допишет в лог обновленный $array1 с категорией common\n```\n\n#### Example 2: FAQ\n\n* _Где лежит файл?_ - путь ``$_SERVER['DOCUMENT_ROOT].\"/{$id}-trace.log\"``\n* _Что будет в логе?_ - будет 2 записи переменной $array1. По умолчанию идет запись лога сверху вниз\n* _Какая категория будет?_ - по умолчанию категория \"common\"\n* _Как изменить путь до лога?_ - по умолчанию лог создается в корне, чтоб его изменить, нужно передать путь от корня в 3-ий параметр метода DebugHelper::traceInit(). Пример: ``DebugHelper::traceInit($id, self::TRACE_MODE_SESSION,'/logs')``\n* _Могу ли я для одного trace сделать один файл, для другого - другой?_ - да, нужно в нужный момент вызвать метод ``DebugHelper::setHashSession($hash)``, где $hash - это любой ключ.\n\n\n## CurlHelper\n\n```php\n$url = 'http://site.ru';\n$curl = CurlHelper::getInstance();\n$response = $curl-\u003erequest($url);\n\n// $response - array response site.ru\n// $curl-\u003elastCode - response http code\n// $curl-\u003elastHeaders - response http headers\n```\n\n### CurlHelper with custom headers\n\n```php\n$url = 'http://site.ru';\n$curl = CurlHelper::getInstance();\n$response = $curl\n    -\u003eaddHeaders([\n        'Accept-Language' =\u003e 'ru-RU',\n        'Custom-Head' =\u003e 'custom',\n    ])\n    -\u003erequest($url);\n\n// $response - array response site.ru\n// $curl-\u003elastCode - response http code\n// $curl-\u003elastHeaders - response http headers\n```\n\n### CurlHelper with debug\n\n```php\n$url = 'http://site.ru';\n$curl = CurlHelper::getInstance(false,[\n    'debug' =\u003e true,\n    'debugFile' =\u003e __DIR__.'/logs'\n]);\n$response = $curl-\u003erequest($url);\n\n// $response - array response site.ru\n// $curl-\u003elastCode - response http code\n// $curl-\u003elastHeaders - response http headers\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkfriend%2Fdevhelpers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarkfriend%2Fdevhelpers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkfriend%2Fdevhelpers/lists"}