{"id":39153865,"url":"https://github.com/sebastianstucke87/vigenere-cipher","last_synced_at":"2026-01-17T21:44:28.455Z","repository":{"id":182797320,"uuid":"170192962","full_name":"sebastianstucke87/vigenere-cipher","owner":"sebastianstucke87","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-22T10:15:57.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-22T11:28:42.024Z","etag":null,"topics":["ddd","php7","phpunit","tdd"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":false,"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/sebastianstucke87.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}},"created_at":"2019-02-11T19:59:48.000Z","updated_at":"2025-05-22T10:16:01.000Z","dependencies_parsed_at":"2023-07-21T13:13:50.040Z","dependency_job_id":null,"html_url":"https://github.com/sebastianstucke87/vigenere-cipher","commit_stats":null,"previous_names":["sebastianstucke87/vigenere-cipher"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sebastianstucke87/vigenere-cipher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastianstucke87%2Fvigenere-cipher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastianstucke87%2Fvigenere-cipher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastianstucke87%2Fvigenere-cipher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastianstucke87%2Fvigenere-cipher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebastianstucke87","download_url":"https://codeload.github.com/sebastianstucke87/vigenere-cipher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastianstucke87%2Fvigenere-cipher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ddd","php7","phpunit","tdd"],"created_at":"2026-01-17T21:44:27.907Z","updated_at":"2026-01-17T21:44:28.447Z","avatar_url":"https://github.com/sebastianstucke87.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Vigenere Cipher\n===\nDomain Driven Design implementation of the famous Vigenère cipher\n---\nThe purpose of this example is the usage of a rich domain model `VigenereCipher`, \ncontaining the entire logic and state via value objects made out primitive data types. \nThe object is instantiated via a function and never changed after that.\n\nIncluded:\n- Objects instead of primitive types\n- Function(s) instead of a single constructor\n- Unit tests for PhpUnit\n\nThe idea of DDD is opposed to anemic models where most of the logic is pushed away into services.\n\nFor more information about the DDD concept as whole (inc. `Data Transfer Objects`) have a look at these excellent references:\n- https://www.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html#adding-behavior-to-entities\n- https://web-techno.net/anemic-domain-model/\n- https://joind.in/event/php-uk-2017/driving-design-through-examples\n- https://medium.com/swlh/creating-coding-excellence-with-domain-driven-design-88f73d2232c3\n- https://speakerdeck.com/el_stoffel/using-symfony-forms-with-rich-domain-models\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastianstucke87%2Fvigenere-cipher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebastianstucke87%2Fvigenere-cipher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastianstucke87%2Fvigenere-cipher/lists"}