{"id":18727099,"url":"https://github.com/drinksandco/symfony_playground","last_synced_at":"2026-04-27T11:31:19.973Z","repository":{"id":107981250,"uuid":"61221367","full_name":"drinksandco/symfony_playground","owner":"drinksandco","description":"An Uvinum project to play around Symfony framework","archived":false,"fork":false,"pushed_at":"2017-11-04T16:38:56.000Z","size":367,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-19T19:53:56.065Z","etag":null,"topics":["command-bus","doctrine","php","playground","symfony","symfony-framework","symfony-playground","symfony3"],"latest_commit_sha":null,"homepage":"https://twitter.com/UvinumEng","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/drinksandco.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}},"created_at":"2016-06-15T16:01:28.000Z","updated_at":"2017-05-07T09:36:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"e3e5d993-0b1f-44ee-ae54-733ce50c6868","html_url":"https://github.com/drinksandco/symfony_playground","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/drinksandco/symfony_playground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drinksandco%2Fsymfony_playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drinksandco%2Fsymfony_playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drinksandco%2Fsymfony_playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drinksandco%2Fsymfony_playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drinksandco","download_url":"https://codeload.github.com/drinksandco/symfony_playground/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drinksandco%2Fsymfony_playground/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32335295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":["command-bus","doctrine","php","playground","symfony","symfony-framework","symfony-playground","symfony3"],"created_at":"2024-11-07T14:16:24.829Z","updated_at":"2026-04-27T11:31:19.967Z","avatar_url":"https://github.com/drinksandco.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Symfony playground\n\nAn Uvinum project to play around Symfony framework.\n\nFor now, let's use the built-in PHP webserver Symfony provide us using: `bin/console server:run`\n\nWe've modelled a `User` (Aggregate Root) that can learn new `Skill`s. \n\nThe App implements a CommandBus and Event management. The controllers execute the needed `Command` sending it to the CommandBus, who will match it with its CommandHandler.\n \nWe have two CommandBus middlewares (`DBTransactionality` and `EventAware`) that will ensure the Commands transactionality, and the Events management (all events generated in the models will be stored during the Command execution, and will be handled / dispatched if the transaction went OK).\n \nThere are three example implementations for the `User` aggregate repository. One using Doctrine ORM and the Domain Entities (`Playground\\App\\Infrastructure\\Repository\\Doctrine\\User\\UserOrmRepository`), another one using Doctrine ORM and separating Domain Entities from Doctrine Entities (`Playground\\App\\Infrastructure\\Repository\\Doctrine\\User\\UserOrmEntitiesRepository`) and another one using raw DBAL connection (`Playground\\App\\Infrastructure\\Repository\\Doctrine\\User\\UserDbalRepository`). \n\nIn the ORM cases, we don't extend directly from the Doctrine repos. Instead of this, we inject the Doctrine Manager Registry to our repo, so we can decouple from Doctrine's implementation and prevent our app to access all public methods available on Doctrine repos. In this direction, the `UserOrmEntitiesRepository` is a test to see if we could keep our domain entities totally decoupled from Doctrine, even for those properties that \"map\" other entities as relations (ArrayCollections and so). \n\nAll Doctrine ORM mapping config files will be found on `src/Playground/App/Infrastructure/Repository/Doctrine/_mapping/*.yml`\n\nYou can re-create the needed schema (the app is configured to use sqlite, so you don't need to install or run MySQL or any other DB) with the following commands: \n* `bin/console doctrine:database:drop --force` (in order to remove any previous DB in the project)\n* `bin/console doctrine:schema:update --force` (in order to create the SQL schema)\n \nThe first time you execute a `composer install` your own parameters.yml will be created based on\nparameters.yml.dist values.\n\nYou can use the PHP webserver to run and test the application, executing `bin/console server:start`\n\nGo \u0026 play. ;-)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrinksandco%2Fsymfony_playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrinksandco%2Fsymfony_playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrinksandco%2Fsymfony_playground/lists"}