Skip to content

PHP-DI/demo

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

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.

About

Demo of a simple application built using PHP-DI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published