Demo of a simple application built using PHP-DI
PHP HTML
Latest commit 8c67d46 Oct 23, 2015 @mnapoli mnapoli Update README.md
Permalink
Failed to load latest commit information.
app First commit Jun 1, 2015
src/SuperBlog Add an example of a class command Jun 1, 2015
web First commit Jun 1, 2015
.gitignore First commit Jun 1, 2015
LICENSE First commit Jun 1, 2015
README.md Update README.md Oct 23, 2015
composer.json First commit Jun 1, 2015
console.php Add an example of a class command Jun 1, 2015
screenshot.png Added screenshot Jun 1, 2015

README.md

PHP-DI application demo

This repository demonstrates how to write a simple application using PHP-DI without any framework.

Screenshot

Disclaimer

Watch out, this project is meant to show how to build an application from scratch with PHP-DI in the simplest way possible. Be aware that this code is only meant for learning purposes and should probably not go to production as-is.

Improvements and pull requests are welcome.

Run

To run this demo, you need to clone it and install dependencies:

git clone https://github.com/PHP-DI/demo.git
cd demo/
composer install

You can then run the web application using PHP's built-in server:

php -S 0.0.0.0:8000 -t web/

The web application is running at http://localhost:8000.

You can also run the CLI application:

php console.php

The following commands are available:

  • php console.php articles: lists the blog articles
  • php console.php article [id]: displays a blog article by its ID

Architecture

The container is created in app/bootstrap.php. The configuration file for the container is app/config.php.

Both the web application and the CLI application require app/bootstrap.php to get the container:

  • the web application (web/index.php) uses FastRoute for routing, and then creates and invokes the controller using PHP-DI
  • the CLI application (console.php) uses Silly: Silly uses the container to create and invoke the commands

You will note that in both case, the controllers/commands are instantiated and invoked by PHP-DI: this is to benefit from dependency injection in those classes.