{"id":34255966,"url":"https://github.com/labrador-kennel/core","last_synced_at":"2025-12-16T13:53:47.745Z","repository":{"id":17077473,"uuid":"19842476","full_name":"labrador-kennel/core","owner":"labrador-kennel","description":"A foundation for building async applications on top of amphp","archived":false,"fork":false,"pushed_at":"2022-03-22T23:49:24.000Z","size":2584,"stargazers_count":12,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-11T00:29:41.787Z","etag":null,"topics":["amphp","labrador-kennel","php7"],"latest_commit_sha":null,"homepage":"https://labrador-kennel.io/docs/core","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"rust-lang/rust","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/labrador-kennel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-16T02:39:32.000Z","updated_at":"2024-05-31T08:00:12.000Z","dependencies_parsed_at":"2022-09-24T13:00:31.362Z","dependency_job_id":null,"html_url":"https://github.com/labrador-kennel/core","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/labrador-kennel/core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labrador-kennel%2Fcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labrador-kennel%2Fcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labrador-kennel%2Fcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labrador-kennel%2Fcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/labrador-kennel","download_url":"https://codeload.github.com/labrador-kennel/core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labrador-kennel%2Fcore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27765805,"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-12-16T02:00:10.477Z","response_time":57,"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":["amphp","labrador-kennel","php7"],"created_at":"2025-12-16T13:53:42.641Z","updated_at":"2025-12-16T13:53:47.732Z","avatar_url":"https://github.com/labrador-kennel.png","language":"PHP","funding_links":[],"categories":["Unsorted yet"],"sub_categories":["Tunnel"],"readme":"# Labrador Core\n\n[![PHP Unit Testing \u0026 Code Lint](https://github.com/labrador-kennel/core/workflows/PHP%20Unit%20Testing%20\u0026%20Code%20Lint/badge.svg)](https://github.com/labrador-kennel/core/actions?query=workflow%3A%22PHP+Unit+Testing+%26+Code+Lint%22)\n[![GitHub release](https://img.shields.io/github/release/labrador-kennel/core.svg?style=flat-square)](https://github.com/cspray/labrador/releases/latest)\n[![GitHub license](https://img.shields.io/github/license/labrador-kennel/core.svg?style=flat-square)](http://opensource.org/licenses/MIT)\n\nAn opinionated, asynchronous micro-framework written on top of [amphp](https://amphp.org). Built using SOLID principles, \nunit testing, and a modular ecosystem Labrador aims to be a production-ready framework for creating asynchronous PHP\napplications. Labrador Core serves as the foundation for this framework and provides important key concepts for building \napps with Labrador.\n\n## Installation\n\n[Composer](https://getcomposer.org) is the only supported method for installing Labrador packages.\n\n```\ncomposer require cspray/labrador\n```\n\n## Quick Start\n\nIf you'd rather get started quickly without having to read a bunch of documentation the code below demonstrates how to \nquickly get an `Application` implemented and running. Otherwise, we recommend checking out the Documentation for more \ndetailed information, and a complete guide to getting started.\n\n```php\n\u003c?php\n\n// app.php in your project's root directory\n\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Cspray\\Labrador\\AbstractApplication;\nuse Cspray\\Labrador\\EnvironmentType;\nuse Cspray\\Labrador\\CoreApplicationObjectGraph;\nuse Cspray\\Labrador\\Engine;\nuse Cspray\\Labrador\\StandardEnvironment;\nuse Amp\\Promise;\nuse Amp\\Delayed;\nuse Amp\\Log\\StreamHandler;\nuse Auryn\\Injector;\nuse Monolog\\Logger;\nuse function Amp\\call;\nuse function Amp\\ByteStream\\getStdout;\n\nclass HelloWorldApplicationObjectGraph extends CoreApplicationObjectGraph {\n\n    public function wireObjectGraph() : Injector {\n        $injector = parent::wireObjectGraph();\n\n        // wire up your app's dependencies\n\n        return $injector;\n    }\n\n}\n\nclass HelloWorldApplication extends AbstractApplication {\n\n    protected function doStart() : Promise {\n        return call(function() {\n            yield new Delayed(500);  // just to show that we are running on the Loop\n            $this-\u003elogger-\u003einfo('Hello Labrador!');\n        }); \n    }\n\n}\n\n$environment = new StandardEnvironment(EnvironmentType::Development());\n$logger = new Logger('labrador.hello-world', [new StreamHandler(getStdout())]);\n\n$injector = (new HelloWorldApplicationObjectGraph($environment, $logger))-\u003ewireObjectGraph();\n\n$app = $injector-\u003emake(HelloWorldApplication::class);\n$engine = $injector-\u003emake(Engine::class);\n\n$engine-\u003erun($app);\n```\n\n## Documentation\n\nLabrador packages have thorough documentation in-repo in the `docs/` directory. You can also check out the \ndocumentation online at [https://labrador-kennel.io/docs/core](https://labrador-kennel.io/docs/core).\n\n## Governance\n\nAll Labrador packages adhere to the rules laid out in the [Labrador Governance repo](https://github.com/labrador-kennel/governance)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flabrador-kennel%2Fcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flabrador-kennel%2Fcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flabrador-kennel%2Fcore/lists"}