{"id":19210655,"url":"https://github.com/mhndev/event","last_synced_at":"2025-10-30T10:43:49.636Z","repository":{"id":62527805,"uuid":"62960539","full_name":"mhndev/event","owner":"mhndev","description":"PHP EVENT SYSTEM","archived":false,"fork":false,"pushed_at":"2017-10-03T13:59:08.000Z","size":6,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-04-01T02:34:18.470Z","etag":null,"topics":["event","event-management","event-system"],"latest_commit_sha":null,"homepage":"","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/mhndev.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}},"created_at":"2016-07-09T17:19:01.000Z","updated_at":"2023-08-27T18:34:44.000Z","dependencies_parsed_at":"2022-11-02T14:16:45.706Z","dependency_job_id":null,"html_url":"https://github.com/mhndev/event","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhndev%2Fevent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhndev%2Fevent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhndev%2Fevent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhndev%2Fevent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhndev","download_url":"https://codeload.github.com/mhndev/event/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249933528,"owners_count":21347695,"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":["event","event-management","event-system"],"created_at":"2024-11-09T13:36:45.002Z","updated_at":"2025-10-30T10:43:44.581Z","avatar_url":"https://github.com/mhndev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## About\n\nThis is a really simple and lightweight php package for developing event based software\n\n## Installation\n\n```\ncomposer require mhndev/event\n```\n\n## Sample Usage\n\n### bind an closure to an event\n\n```php\n\nEvent::bind('order.payed',function($order){\n    //do some cool stuf here\n});\n\n```\n\n### Another example\n```php\nclass MyClass {\n    public function __invoke($order) {\n        //do something here\n    }\n}\n\n$myObject = new MyClass;\n\n\nEvent::bind('order.payed', $myObject($order));\n\n\n```\n\n### trigger an event\n\n```php\n\n// pass $order object as second argument\nEvent::trigger('order.payed', $order);\n\n```\n\n### Entity ( Model ) Observer\n\nBinding an observer for a specific event on a model.\n\n```php\n\nUser::addObserver('before_update', function($driver){\n\n});\n```\n\nFiring an Event on a model object.\n\nActive Record Pattern\n\n```php\nclass User\n{\n    use \\mhndev\\event\\ObservableTrait;\n    \n    \n    function update(array $data)\n    {\n        $user = $this;\n        \n        $this-\u003efireEvent('before_update', $this);\n\n        $updatedUser = $this-\u003eupdate($array);\n\n        $driver-\u003efireEvent('after_update', $user, $updatedUser);\n    }\n}\n\n\n```\n\nData Mapper Pattern\n\n\n```php\n\nclass User\n{\n    use \\mhndev\\event\\ObservableTrait;\n}\n\n\nclass UserRepository\n{\n\n\n    function update($user_identifier, array $data)\n    {\n        $user = $this-\u003efindByIdentifier($user_identifier);\n\n        $user-\u003ebuildByOptions($data);\n\n        $user-\u003efireEvent('before_update', $user);\n\n        $updatedUser = $this-\u003eupdate($user);\n\n        $driver-\u003efireEvent('after_update', $user, $updatedUser);\n\n        return $updatedUser;\n    }\n}\n\n\n```\n\n## Todos\n\n-implement tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhndev%2Fevent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhndev%2Fevent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhndev%2Fevent/lists"}