{"id":24196252,"url":"https://github.com/cable8mm/enum-getter","last_synced_at":"2025-03-03T07:46:06.810Z","repository":{"id":272179464,"uuid":"915366839","full_name":"cable8mm/enum-getter","owner":"cable8mm","description":"This package simplifies working with Enums by providing convenient functionality for handling keys, values, and combined arrays, including a translate function.","archived":false,"fork":false,"pushed_at":"2025-03-01T16:30:05.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T17:24:07.602Z","etag":null,"topics":["enum","getter","laravel","nova","php"],"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/cable8mm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":"2025-01-11T16:58:06.000Z","updated_at":"2025-03-01T16:30:08.000Z","dependencies_parsed_at":"2025-02-20T14:21:02.948Z","dependency_job_id":"ca85c51f-8912-4df9-94c8-d9428a046342","html_url":"https://github.com/cable8mm/enum-getter","commit_stats":null,"previous_names":["cable8mm/enum-getter"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cable8mm%2Fenum-getter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cable8mm%2Fenum-getter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cable8mm%2Fenum-getter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cable8mm%2Fenum-getter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cable8mm","download_url":"https://codeload.github.com/cable8mm/enum-getter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241399580,"owners_count":19956924,"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":["enum","getter","laravel","nova","php"],"created_at":"2025-01-13T19:24:01.561Z","updated_at":"2025-03-03T07:46:06.805Z","avatar_url":"https://github.com/cable8mm.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Enum-Getter - The simplest way to get the enum values and keys\n\n[![code-style](https://github.com/cable8mm/enum-getter/actions/workflows/code-style.yml/badge.svg)](https://github.com/cable8mm/enum-getter/actions/workflows/code-style.yml)\n[![run-tests](https://github.com/cable8mm/enum-getter/actions/workflows/run-tests.yml/badge.svg)](https://github.com/cable8mm/enum-getter/actions/workflows/run-tests.yml)\n[![Packagist Version](https://img.shields.io/packagist/v/cable8mm/enum-getter)](https://packagist.org/packages/cable8mm/enum-getter)\n[![Packagist Dependency Version](https://img.shields.io/packagist/dependency-v/cable8mm/enum-getter/php?logo=PHP\u0026logoColor=white\u0026color=777BB4\n)](https://packagist.org/packages/cable8mm/enum-getter)\n[![Total Downloads](https://img.shields.io/packagist/dt/cable8mm/enum-getter)](https://packagist.org/packages/cable8mm/enum-getter/stats)\n[![Total Stars](https://img.shields.io/packagist/stars/cable8mm/enum-getter)](https://github.com/cable8mm/enum-getter/stargazers)\n[![License](https://img.shields.io/packagist/l/cable8mm/enum-getter)](https://github.com/cable8mm/enum-getter/blob/main/LICENSE.md)\n\nThis package simplifies working with `Enum`s by providing convenient functionality for handling keys, values, and combined arrays, including a `translate` function.\n\nIt is particularly useful for binding enums to `select` or `multiselect` tags in Laravel Nova, allowing you to manage and use translated values effortlessly.\n\n## Installation\n\nYou can install the package via composer:\n\n```bash\ncomposer require cable8mm/enum-getter\n```\n\n## Usage\n\nIt can be used for Laravel Nova like this:\n\n```php\nuse Laravel\\Nova\\Fields\\Badge;\n\n/**\n * @see https://nova.laravel.com/docs/v5/resources/fields#badge-field\n */\nBadge::make(__('Status'), 'status')\n    -\u003emap(Status::array(value: 'info'))\n    -\u003elabels(Status::array()),\n```\n\n```php\nuse Laravel\\Nova\\Fields\\Select;\n\n/**\n * @see https://nova.laravel.com/docs/v5/resources/fields#select-field\n */\nSelect::make(__('Status'), 'status')\n    -\u003eoptions(Status::array())\n    -\u003edisplayUsingLabels(),\n```\n\n```php\nuse Laravel\\Nova\\Fields\\Status;\n\n/**\n * @see https://nova.laravel.com/docs/v5/resources/fields#status-field\n */\nStatus::make(__('Status'), 'status')\n    -\u003eloadingWhen(Status::loadingWhen())\n    -\u003efailedWhen(Status::failedWhen())\n    -\u003edisplayUsing(function ($value) {\n        return Status::{$value}-\u003evalue() ?? '-';\n    }),\n```\n\nIn order to make a Nova factory::\n\n```php\n// In Nova factory file\npublic function definition(): array\n{\n    return [\n        'size' =\u003e fake()-\u003erandomElement(Status::keys()),\n    ];\n}\n```\n\n## How to make use in detail\n\n```php\nuse Cable8mm\\EnumGetter\\EnumGetter;\n\nenum Size: string\n{\n    use EnumGetter;\n\n    case LARGE = 'large';\n    case MIDDLE = 'middle';\n    case SMALL = 'small';\n}\n\nprint Size::LARGE-\u003ename;         //=\u003e 'LARGE'\nprint Size::LARGE-\u003ekey();        //=\u003e 'large'\nprint Size::LARGE-\u003evalue;        //=\u003e 'large'\nprint Size::has('large');        //=\u003e true\nprint Size::has('larger');       //=\u003e false\nprint Size::has(value: 'large'); //=\u003e true\nprint Size::names();             //=\u003e ['LARGE', 'MIDDLE', 'SMALL']\nprint Size::keys();              //=\u003e ['large', 'middle', 'small']\nprint Size::values();            //=\u003e ['large', 'middle', 'small']\nprint Size::array();             //=\u003e ['large'=\u003e'large', 'middle'=\u003e'middle', 'small'=\u003e'small']\nprint Size::reverse();           //=\u003e ['large'=\u003e'large', 'middle'=\u003e'middle', 'small'=\u003e'small']\nprint Size::of('LARGE');         //=\u003e Size::LARGE\nprint Size::from('large');       //=\u003e Size::LARGE\n```\n\nWhen overriding the `value()` method to support non-English values,\n\n```php\nuse Cable8mm\\EnumGetter\\EnumGetter;\n\nenum Size2: string\n{\n    use EnumGetter;\n\n    case LARGE = 'large';\n    case MIDDLE = 'middle';\n    case SMALL = 'small';\n\n    public function value(): string\n    {\n        return match ($this) {\n            self::LARGE =\u003e __('large'),     // grand\n            self::MIDDLE =\u003e __('middle'),   // milieu\n            self::SMALL =\u003e __('small'),     // petit(e)\n        };\n    }\n}\n\nprint Size2::LARGE-\u003ename;        //=\u003e 'LARGE'\nprint Size2::LARGE-\u003ekey();       //=\u003e 'large'\nprint Size2::LARGE-\u003evalue;       //=\u003e 'large'\nprint Size::has('large');        //=\u003e true\nprint Size::has('larger');       //=\u003e false\nprint Size::has(value: 'large'); //=\u003e false\nprint Size::has(value: 'grand'); //=\u003e true\nprint Size2::LARGE-\u003evalue();     //=\u003e 'grand'\nprint Size2::names();            //=\u003e ['LARGE', 'MIDDLE', 'SMALL']\nprint Size2::keys();             //=\u003e ['large', 'middle', 'small']\nprint Size2::values();           //=\u003e ['grand', 'milieu', 'petit(e)']\nprint Size2::array();            //=\u003e ['large'=\u003e'grand', 'middle'=\u003e'milieu', 'small'=\u003e'petit(e)']\nprint Size2::reverse();          //=\u003e ['grand'=\u003e'large', 'milieu'=\u003e'middle', 'petit(e)'=\u003e'small']\nprint Size2::of('LARGE');        //=\u003e Size::LARGE\nprint Size2::from('large');      //=\u003e Size::LARGE\n```\n\n### Testing\n\n```bash\ncomposer test\n```\n\n### Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n### Security\n\nIf you discover any security related issues, please email \u003ccable8mm@gmail.com\u003e instead of using the issue tracker.\n\n## Credits\n\n- [Sam Lee](https://github.com/cable8mm)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcable8mm%2Fenum-getter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcable8mm%2Fenum-getter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcable8mm%2Fenum-getter/lists"}