{"id":20048598,"url":"https://github.com/sbwerewolf/language-specific","last_synced_at":"2025-05-05T10:31:39.017Z","repository":{"id":62540812,"uuid":"217614335","full_name":"SbWereWolf/language-specific","owner":"SbWereWolf","description":"library for variable handling with specific of PHP way","archived":false,"fork":false,"pushed_at":"2025-02-27T00:41:05.000Z","size":2154,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-25T20:50:18.733Z","etag":null,"topics":["array","php","php-array"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SbWereWolf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-25T21:03:16.000Z","updated_at":"2025-02-26T19:39:17.000Z","dependencies_parsed_at":"2024-12-29T11:17:42.478Z","dependency_job_id":"59b95a3b-c132-4734-bdb5-58e19f9bf553","html_url":"https://github.com/SbWereWolf/language-specific","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SbWereWolf%2Flanguage-specific","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SbWereWolf%2Flanguage-specific/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SbWereWolf%2Flanguage-specific/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SbWereWolf%2Flanguage-specific/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SbWereWolf","download_url":"https://codeload.github.com/SbWereWolf/language-specific/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252480508,"owners_count":21754784,"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":["array","php","php-array"],"created_at":"2024-11-13T11:44:46.334Z","updated_at":"2025-05-05T10:31:39.010Z","avatar_url":"https://github.com/SbWereWolf.png","language":"PHP","readme":"# How to install\n```bash\ncomposer require sbwerewolf/language-specific\n```\n# Features\nArrayHandler with ValueHandler are purpose to **safe access** to array\n elements and **type-safe using** of elements values\n\nWith ArrayHandler class you do not need to use \n```php \narray_key_exists()\nintval()\nboolval()\nfloatval()\n\nand others\n```\nWith ValueHandler class you get that type exact you want.\n# Use-cases\n## Get database response with proper types\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$connection = new PDO ($dsn,$login,$password);\n\n$command = $connection-\u003e\n    prepare('select name,salary from employee'\n            . ' ORDER BY salary DESC LIMIT 1');\n$command-\u003eexecute();\n$data = $command-\u003efetch(PDO::FETCH_ASSOC);\n/*\n$data =\n    array (\n        'name' =\u003e 'Mike',\n        'salary'=\u003e 19999.99\n    );\n*/\n\n$employee = new AdvancedArray($data);\necho \"The highest paid employee is {$employee-\u003eget('name')-\u003estr()}\"\n    . \", with salary of {$employee-\u003eget('salary')-\u003eint()}$\";\n/*\nThe highest paid employee is Mike, with salary of 19999$\n*/\n```\n\n# Library methods of version 8.4\n## raw() - returns original array\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray(\n    [0 =\u003e 'first',\n    'index' =\u003e 20, \n    3 =\u003e 'last',]\n    );\n    \n$original = $data-\u003eraw();\n\nvar_export($original);\n/*\narray (\n  0 =\u003e 'first',\n  'index' =\u003e 20,\n  3 =\u003e 'last',\n)\n*/\n```\n## has($key = null) - flag that array has the index (key)\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray([0=\u003e1]);\n$data-\u003ehas(); // true\n// array has at least one element\n\n$data = new AdvancedArray([0=\u003e1]);\n$data-\u003ehas(0); // true\n// array has element with index 0\n\n$data = new AdvancedArray([2=\u003e3]);\n$data-\u003ehas('4'); // false\n// array not has element with index '4'\n```\n## get($key = null) - Get element by index or without it\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray(\n    [0 =\u003e 'first',\n    'index' =\u003e 20, \n    3 =\u003e 'last',]);\n\n$data-\u003eget()-\u003easIs();\n/* 'first' */\n$data-\u003eget()-\u003eisReal();\n/* true */\n\n$data-\u003eget('no-exists')-\u003easIs();\n/* NULL */\n$data-\u003eget('no-exists')-\u003eisReal();\n/* false */\n\n$data-\u003eget('index')-\u003easIs();\n/* 20 */\n$data-\u003eget('index')-\u003eisReal();\n/* true */\n\n$data-\u003eget(99)-\u003easIs();\n/* NULL */\n$data-\u003eget(99)-\u003eisReal();\n/* false */\n\n$data-\u003eget(3)-\u003easIs();\n/* 'last' */\n$data-\u003eget(3)-\u003eisReal();\n/* true */\n```\n\n## isDummy() - flag that indicates exemplar value is dummy\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray([\n    'first' =\u003e ['A' =\u003e 1],\n    'next' =\u003e ['B' =\u003e 2],\n    'last' =\u003e ['C' =\u003e 3],\n]);\n\n$data-\u003epull('first')-\u003eisDummy(); // false\n$data-\u003epull('begin')-\u003eisDummy(); // true\n\n``` \n\n## pull($key = null) - get advanced array for nested array\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$level4 = [-4 =\u003e\n    ['over' =\u003e ['and' =\u003e ['over' =\u003e ['again' =\u003e ['for always']]]]]];\n$level3 = [-3 =\u003e $level4, 'some' =\u003e 'other',];\n$level2 = [-2 =\u003e $level3];\n$level1 = [-1 =\u003e $level2, 'other' =\u003e ['content'], 'any'];\n$level0 = [$level1];\n\n$data = new AdvancedArray($level0);\n\n$data-\u003epull(0)-\u003epull(-1)-\u003epull(-2)\n                -\u003epull(-3)-\u003epull(-4)-\u003epull('over')\n                -\u003epull('and')-\u003epull('over')-\u003epull('again')\n                -\u003eisDummy(); // false\n\n$data-\u003epull(0)-\u003epull(-1)-\u003epull(-2)\n                -\u003epull(-3)-\u003epull(-4)-\u003epull('over')\n                -\u003epull('and')-\u003epull('over')-\u003epull('again')\n                -\u003eget()-\u003estr(); // 'for always'\n\n$data-\u003epull(0)-\u003epull(-1)-\u003epull(-2)\n                -\u003epull(-3)-\u003epull(-4\n                )-\u003epull(-5)-\u003eisDummy(); // true\n```\n\n## arrays() iterate through array and get handler for each nested array\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray([\n        ['first', 'next', 'last',],\n        ['A','B','C',], \n        ['1','2','3',]\n    ]);\n\nforeach ($data-\u003earrays() as $next) {\n    /* @var $next AdvancedArray */\n    echo PHP_EOL. var_export($next-\u003eraw());\n}\n\n/*\narray (\n  0 =\u003e 'first',\n  1 =\u003e 'next',\n  2 =\u003e 'last',\n)\narray (\n  0 =\u003e 'A',\n  1 =\u003e 'B',\n  2 =\u003e 'C',\n)\narray (\n  0 =\u003e '1',\n  1 =\u003e '2',\n  2 =\u003e '3',\n)\n*/\n```\n## asIs() - Get value as it is\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray('1.1');\n$data-\u003eget()-\u003easIs(); // \"1.1\"\n```\n## int() - to integer\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray('1.1');\n$data-\u003eget()-\u003eint(); // 1\n```\n## double() to double\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray('1.1');\n$data-\u003eget()-\u003edouble(); // 1.1\n```\n## str() - to string\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray('1.1');\n$data-\u003eget()-\u003estr(); // \"1.1\"\n```\n## bool() - to boolean\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray('1.1');\n$data-\u003eget()-\u003ebool(); // true\n```\n## array() - to array\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n/* Let input string */\n$data = new AdvancedArray('1.1');\n$data-\u003eget()-\u003earray(); // [0 =\u003e \"1.1\"]\n\n/* Let input array with string */\n$data = new AdvancedArray(['1.1']);\n$data-\u003eget()-\u003earray(); // [0 =\u003e \"1.1\"]\n```\n## object() - to object\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\nuse SbWereWolf\\LanguageSpecific\\Value\\CommonValue;\n\n$data = new AdvancedArray([new CommonValue()]);\n$value = $data-\u003eget()-\u003eobject();\nvar_export($value);\n/*\n\\SbWereWolf\\LanguageSpecific\\Value\\CommonValue::__set_state(array(\n   '_value' =\u003e NULL,\n   '_isReal' =\u003e true,\n   '_default' =\u003e NULL,\n))\n*/\n```\n\n## isReal() - flag that value of element is real (is not dummy)\n\n```php\nuse SbWereWolf\\LanguageSpecific\\AdvancedArray;\n\n$data = new AdvancedArray([0=\u003e1]);\n$data-\u003eget(0)-\u003eisReal(); // true\n// array element with index 0 has value\n\n$data = new AdvancedArray([2=\u003e3]);\n$data-\u003eget('4')-\u003eisReal(); // false\n// array do not have element with index '4' then value is not real\n```\n## type() - get type of value\n\n```php\nuse SbWereWolf\\LanguageSpecific\\Value\\CommonValue;\n\n(new CommonValue(null))-\u003etype(); // `NULL`\n\n(new CommonValue(false))-\u003etype(); // `boolean`\n\n(new CommonValue(0))-\u003etype(); // `integer`\n\n(new CommonValue(0.0))-\u003etype(); // `double`\n\n(new CommonValue('a'))-\u003etype(); // `string`\n\n(new CommonValue([]))-\u003etype(); // `array`\n\n(new CommonValue(new CommonValue()))-\u003etype(); // `object`\n```\n\n## CommonValueFactory::makeCommonValueAsDummy\n\nCreate exemplar of CommonValue as dummy\n\n```php\nuse SbWereWolf\\LanguageSpecific\\Value\\CommonValueFactory;\n\n$value = CommonValueFactory::makeCommonValueAsDummy();\nvar_export($value);\n/*\n\\SbWereWolf\\LanguageSpecific\\Value\\CommonValue::__set_state(array(\n   '_value' =\u003e NULL,\n   '_isReal' =\u003e false,\n   '_default' =\u003e NULL,\n))\n*/\n```\n\n## default($value = null) - define default value\n\nDefault value will be implemented when value is dummy\n\n```php\nuse SbWereWolf\\LanguageSpecific\\Value\\CommonValueFactory;\n\n$dummy = CommonValueFactory::makeCommonValueAsDummy();\n$dummy-\u003edefault('default')-\u003estr(); // \"default\"\n\n$real = CommonValueFactory::makeCommonValue('real value');\n$real-\u003edefault('default')-\u003estr(); // \"real value\"\n```\n# Detail info\n\nRefer to\n\n- [AdvancedArray](https://github.com/SbWereWolf/language-specific/blob/master/tests/unit/AdvancedArrayTest.php)\n- [BaseArray](https://github.com/SbWereWolf/language-specific/blob/master/tests/unit/BaseArrayTest.php)\n- [CommonArray](https://github.com/SbWereWolf/language-specific/blob/master/tests/unit/CommonArrayTest.php)\n- [CommonValue](https://github.com/SbWereWolf/language-specific/blob/master/tests/unit/CommonValueTest.php)\n \nfor detail examples of class methods working\n\n# Unit tests\n```bash\ncomposer test\n```\n# Контакты\n```\nVolkhin Nikolay\ne-mail ulfnew@gmail.com\nphone +7-902-272-65-35\nTelegram @sbwerewolf\n```\n\n- [Telegram chat with me](https://t.me/SbWereWolf)\n- [WhatsApp chat with me](https://wa.me/79022726535) \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbwerewolf%2Flanguage-specific","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbwerewolf%2Flanguage-specific","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbwerewolf%2Flanguage-specific/lists"}