MIT License
A project to demonstrate how to integrate Doctrine 3.x into Slim. This is the companion code for the Cookbook entry Using Doctrine with Slim in Slim's documentation.
The Slim-Doctrine-Demo project is a small REST API that allows its clients to create and retrieve lists of users.
At its core, Doctrine's EntityManager
is used to persist and retrieve these
users from an SQLite database.
Slim-Doctrine-Demo
├── .github
│ └── workflows
│ └── ci.yml -- Automated testing pipeline
├── bin
│ └── doctrine -- Doctrine CLI tool
├── public
│ └── index.php -- HTTP front controller (requires ../bootstrap.php)
├── src
│ ├── Action -- Slim request handlers
│ │ ├── CreateUser.php
│ │ └── ListUsers.php
│ ├── DI
│ │ ├── Doctrine.php -- EntityManager service definition
│ │ └── Slim.php -- Slim request handlers service definitions
│ └── Domain -- Annotated entity classes
│ └── User.php
├── tests/ -- Automated tests
├── var
│ ├── coverage/ -- Test coverage results in HTML
│ ├── doctrine/ -- Doctrine metadata cache
│ └── database.sqlite -- Development database
├── bootstrap.php -- DI container setup (requires ./settings.php)
├── composer.json
├── composer.lock
├── LICENSE
├── phpunit.xml.dist
├── README.md -- You are here.
├── settings.php -- Settings currently in use (ignored by Git)
└── settings.php.dist -- Sample settings.php for development (committed to Git)
Typing composer serve
in a console will install the project dependencies, create the database and open
the API at http://localhost:8000
. Once it is running you can make requests against it with a browser,
curl or similar tools.
$ curl -X POST localhost:8000/users
{
"id": 2,
"email": "[email protected]",
"registered_at": "2022-01-15T23:10:51+01:00"
}
$ curl -X GET localhost:8000/users
[
{
"id": 1,
"email": "[email protected]",
"registered_at": "2022-01-15T23:10:50+01:00"
},
{
"id": 2,
"email": "[email protected]",
"registered_at": "2022-01-15T23:10:51+01:00"
}
]
Run ./bin/doctrine
(this script needs the project dependencies, so run composer install
first).
Similarly, typing composer test
will take care of loading the testing environment and running PHPUnit. If the XDebug exension is enabled code coverage results will be available at var/coverage/
after running the tests.