{"id":18801557,"url":"https://github.com/addiks/symfony_generics","last_synced_at":"2026-02-20T00:01:43.749Z","repository":{"id":56940624,"uuid":"153897000","full_name":"addiks/symfony_generics","owner":"addiks","description":"Generic components for symfony","archived":false,"fork":false,"pushed_at":"2025-01-27T11:54:56.000Z","size":422,"stargazers_count":0,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-30T17:52:23.793Z","etag":null,"topics":["configurable","controllers","generic","symfony"],"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/addiks.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-20T11:05:46.000Z","updated_at":"2025-01-27T11:55:00.000Z","dependencies_parsed_at":"2023-11-22T06:26:16.944Z","dependency_job_id":"a6eace4e-50ec-442b-9c2f-a93739184d4c","html_url":"https://github.com/addiks/symfony_generics","commit_stats":{"total_commits":115,"total_committers":1,"mean_commits":115.0,"dds":0.0,"last_synced_commit":"a26e0016b47423d4d049e299fa7afcc9ae6b7bbb"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/addiks/symfony_generics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/addiks%2Fsymfony_generics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/addiks%2Fsymfony_generics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/addiks%2Fsymfony_generics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/addiks%2Fsymfony_generics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/addiks","download_url":"https://codeload.github.com/addiks/symfony_generics/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/addiks%2Fsymfony_generics/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272971422,"owners_count":25024093,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["configurable","controllers","generic","symfony"],"created_at":"2024-11-07T22:24:24.131Z","updated_at":"2025-10-18T20:41:25.873Z","avatar_url":"https://github.com/addiks.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Scrutinizer Build Status][11]][12]\n[![Scrutinizer Code Quality][13]][14]\n[![Code Coverage][15]][16]\n\n[![Total Downloads][18]][19]\n[![Licence][20]][19]\n[![Version][21]][19]\n[![PHP][23]][19]\n\n# Symfony Generic Components\n\nThis is a collection of configurable generic components to use for symfony. (Currently it mostly consists of generic\ncontrollers.) I believe that as a developer you should focus your work as much as possible to model and mold your\ndomain of choice into software. Other technical necessities (such as controllers) should be reduced as much as possible.\n\nThe generic components in this library are built in a way that they can be re-used multiple times in different\nconfigurations to replace components in your software that you would otherwise would have to build from scratch.\nThis not only saves you time, it also improves the quality of your software because all the components in this library\nare fully tested and thus by extension a bigger part of your application becomes tested.\n\nAdditionally, if you use generic components instead of writing everything by hand, your application becomes more uniform\nand machine-readable \u0026 -interpretable. For example: If you use generic controllers it is easy to tell which controllers\njust render a template, you could write a [smoke-test][17] that just executes all template-render-controllers and checks\nif any errors happen. Because you know that these controllers just render a template and do nothing else, you know that\nyou can execute them without side-effect. Without doing much, you would have already tested a big portion of your\napplication. (I actually plan to include such a smoke-test in this library in the future.)\n\nIn short, these are the advantages of using this library:\n* Less code to write and maintain\n* More time for the things that make your software unique\n* A bigger part of your application will be battle-tested\n* More standardized parts that other developers will know how to work with\n\nThese components currently exist in the library:\n\n| Type       | Name                                    | Description                        |\n| ---------- | --------------------------------------- | ---------------------------------- |\n| Controller | [API/GenericEntityCreateController][1]  | API to create an entity.           |\n| Controller | [API/GenericEntityFetchController][2]   | API to download an entity.         |\n| Controller | [API/GenericEntityInvokeController][3]  | API to call a method on an entity. |\n| Controller | [API/GenericEntityListingController][4] | API to get a list of entities.     |\n| Controller | [API/GenericEntityRemoveController][5]  | API to remove an entity.           |\n| Controller | [API/GenericServiceInvokeController][6] | API to call a method on a service. |\n| Controller | [GenericTemplateRenderController][7]    | Renders a template with arguments. |\n| Controller | [GenericExceptionResponseController][8] | Handle different exceptions.       |\n| Command    | EntityInvokeCommand                     | Invoke Entity-Methods from CLI.    |\n| Command    | ServiceInvokeCommand                    | Invoke Service-Methods from CLI.   |\n| Service    | ArgumentCompiler                        | More versatile alternative to symfony expression-language                     |\n| Router     | RoutingLoaderDecorator                  | Decorates a router to allow service-tag-based routes                          | \n| Voter      | Owned (Interface)                       | Entity-Access-Authorization: Entities can specify an owner user               |\n| Voter      | OwnedFacade (Interface)                 | Entity-Access-Authorization: Entities can specify if they are owned by a user |\n| Voter      | Owner (Interface)                       | Entity-Access-Authorization: User can specify if he own an entity             |\n| Voter      | OwnershipVoter                          | Voter than can restrict acces based on interfaces above                       |\n\n[1]: documentation/controllers/api/entity-create.md\n[2]: documentation/controllers/api/entity-fetch.md\n[3]: documentation/controllers/api/entity-invoke.md\n[4]: documentation/controllers/api/entity-listing.md\n[5]: documentation/controllers/api/entity-remove.md\n[6]: documentation/controllers/api/service-invoke.md\n[7]: documentation/controllers/template-render.md\n[8]: documentation/controllers/exception-response.md\n[11]: https://scrutinizer-ci.com/g/addiks/symfony_generics/badges/build.png?b=master\n[12]: https://scrutinizer-ci.com/g/addiks/symfony_generics/build-status/master\n[13]: https://scrutinizer-ci.com/g/addiks/symfony_generics/badges/quality-score.png?b=master\n[14]: https://scrutinizer-ci.com/g/addiks/symfony_generics/?branch=master\n[15]: https://scrutinizer-ci.com/g/addiks/symfony_generics/badges/coverage.png?b=master\n[16]: https://scrutinizer-ci.com/g/addiks/symfony_generics/?branch=master\n[17]: https://en.wikipedia.org/wiki/Smoke_testing_%28software%29\n[18]: https://img.shields.io/packagist/dm/addiks/symfony_generics.svg\n[19]: https://packagist.org/packages/addiks/symfony_generics\n[20]: https://img.shields.io/packagist/l/addiks/symfony_generics.svg\n[21]: https://img.shields.io/packagist/v/addiks/symfony_generics.svg\n[23]: https://img.shields.io/github/last-commit/addiks/symfony_generics.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faddiks%2Fsymfony_generics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faddiks%2Fsymfony_generics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faddiks%2Fsymfony_generics/lists"}