{"id":23842380,"url":"https://github.com/php-toolkit/stdlib","last_synced_at":"2025-09-07T18:32:01.802Z","repository":{"id":43412182,"uuid":"270659788","full_name":"php-toolkit/stdlib","owner":"php-toolkit","description":"Standard and basic PHP tool library. Helper utils for string, array, object, env, os and more.","archived":false,"fork":false,"pushed_at":"2024-03-25T01:50:54.000Z","size":299,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-25T18:42:06.041Z","etag":null,"topics":["dotenv","environment","optional","php","php-array","php-library","php-strings","stdlib"],"latest_commit_sha":null,"homepage":"https://php-toolkit.github.io/stdlib/","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/php-toolkit.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":"2020-06-08T12:27:03.000Z","updated_at":"2024-06-19T02:48:04.911Z","dependencies_parsed_at":"2023-11-18T00:13:28.191Z","dependency_job_id":"f29244d1-a88f-4444-97e2-e08de6a81fba","html_url":"https://github.com/php-toolkit/stdlib","commit_stats":{"total_commits":187,"total_committers":2,"mean_commits":93.5,"dds":"0.010695187165775444","last_synced_commit":"02331add7273a160d938c5b928dfb07fd29805ea"},"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-toolkit%2Fstdlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-toolkit%2Fstdlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-toolkit%2Fstdlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-toolkit%2Fstdlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/php-toolkit","download_url":"https://codeload.github.com/php-toolkit/stdlib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232240700,"owners_count":18493527,"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":["dotenv","environment","optional","php","php-array","php-library","php-strings","stdlib"],"created_at":"2025-01-02T18:38:21.797Z","updated_at":"2025-09-07T18:32:01.788Z","avatar_url":"https://github.com/php-toolkit.png","language":"PHP","readme":"# StdLib\n\n[![License](https://img.shields.io/github/license/php-toolkit/stdlib)](LICENSE)\n[![Php Version Support](https://img.shields.io/packagist/php-v/toolkit/stdlib)](https://packagist.org/packages/toolkit/stdlib)\n[![Latest Stable Version](http://img.shields.io/packagist/v/toolkit/stdlib.svg)](https://packagist.org/packages/toolkit/stdlib)\n[![Unit Tests](https://github.com/php-toolkit/stdlib/actions/workflows/php.yml/badge.svg)](https://github.com/php-toolkit/stdlib/actions)\n[![Docs on pages](https://img.shields.io/badge/DocsOn-Pages-brightgreen.svg?maxAge=2592000)](https://php-toolkit.github.io/stdlib/)\n\n🧰 Stdlib - Useful basic tools library for PHP development.\n\n**Contains**:\n\n- array, string, number, object helper\n- common php, OS env information\n\n**More Utils**\n\n- `PhpDotEnv` Dotenv(`.env`) file load\n- `AutoLoader` Simple autoloader\n- `ObjectBox` simple object container\n- `Optional` like java `java.util.Optional`\n- and more ...\n\n## Install\n\n```bash\ncomposer require toolkit/stdlib\n```\n\n## String helper\n\n### StrBuffer\n\n```php\nuse Toolkit\\Stdlib\\Str\\StrBuffer;\n\n$buf = StrBuffer::new(\"c\");\n$buf-\u003eprepend('ab')\n$buf-\u003eappend('de')\n\n$str = (string)$buf; // \"abcde\"\n$str = $buf-\u003etoString(); // \"abcde\"\n// get and clean.\n$str = $buf-\u003efetch(); // \"abcde\"\n$str = $buf-\u003ejoin(','); // \"ab,c,de\"\n```\n\n## Object helper\n\n### Object box\n\n`ObjectBox` - Simple object container.\n\n```php\nuse Toolkit\\Stdlib\\Obj\\ObjectBox;\n\n$box = ObjectBox::global();\n\n// set\n$box-\u003eset('router', function () {\n    return new MyRouter();\n});\n\n$box-\u003eset('renderer', [\n    'class' =\u003e MyRenderer::class,\n    'tplDir' =\u003e 'path/to/dir',\n]);\n\n// with options for create\n$box-\u003eset('somObj', [\n    'class' =\u003e MyObject::class,\n    '__opt' =\u003e [\n        // will always create new object.\n        'objType' =\u003e ObjectBox::TYPE_PROTOTYPE,\n    ],\n]);\n\n// get\n/** @var MyRouter $router */\n$router = $box-\u003eget('router');\n/** @var MyRenderer $renderer */\n$renderer = $box-\u003eget('renderer');\n```\n\n## Util classes\n\n### AutoLoader\n\n`AutoLoader` - an simple psr4 loader, can use for tests.\n\n```php\nAutoLoader::addFiles([\n    // alone files\n]);\n\n$loader = AutoLoader::getLoader();\n$loader-\u003eaddPsr4Map([\n    'namespace' =\u003e 'path'\n]);\n\n$loader-\u003eaddClassMap([\n 'name' =\u003e 'class file'\n]);\n```\n\n### Optional\n\nIt aims to eliminate excessive if judgments.\n\nNot use Optional:\n\n```php\nuse Toolkit\\Stdlib\\Util\\Optional;\n\n$userModel = UserModel::findOne(23);\n\nif ($userModel) {\n    $username = $userModel-\u003ename;\n} else {\n    $username = 'unknown';\n}\n```\n\nUse Optional:\n\n```php\nuse Toolkit\\Stdlib\\Util\\Optional;\n\n$username = Optional::ofNullable($userModel)\n    -\u003emap(function ($userModel) {\n        return $userModel-\u003ename;\n    })-\u003eorElse('unknown');\n```\n\nUse arrow syntax:\n\n```php\nuse Toolkit\\Stdlib\\Util\\Optional;\n\n$username = Optional::ofNullable($userModel)\n    -\u003emap(fn($userModel) =\u003e $userModel-\u003ename)\n    -\u003eorElse('unknown');\n```\n\n### PhpDotEnv\n\n`PhpDotEnv` - a simple dont env file loader.\n\nThe env config file `.env` (must is 'ini' format):\n\n```ini\nAPP_ENV=dev\nDEBUG=true\n; ... ...\n```\n\nUsage:\n\n```php\nPhpDotEnv::load(__DIR__, '.env');\n\nenv('DEBUG', false);\nenv('APP_ENV', 'prod');\n```\n\n### Stream\n\n```php\nuse Toolkit\\Stdlib\\Util\\Stream\\DataStream;\nuse Toolkit\\Stdlib\\Util\\Stream\\ListStream;\n\n$userList = ListStream::of($userModels)\n    -\u003efilter(fn($userModel) =\u003e $userModel-\u003eage \u003e 20) // only need age \u003e 20\n    -\u003emap(function ($userModel) {\n        // only need field: age, name\n        return [\n            'age'  =\u003e $userModel-\u003eage,\n            'name' =\u003e $userModel-\u003ename,\n        ];\n    })\n    -\u003etoArray();\n\nvdump($userList);\n```\n\n### PipeFilters\n\n```php\n$pf = PipeFilters::newWithDefaultFilters();\n\n$val = $pf-\u003eapplyString('inhere', 'upper'); // 'INHERE'\n$val = $pf-\u003eapplyString('inhere', 'upper|substr:0,3'); // 'INH'\n```\n\n## License\n\n[MIT](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphp-toolkit%2Fstdlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphp-toolkit%2Fstdlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphp-toolkit%2Fstdlib/lists"}