Skip to content

yknsilva/phractico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Go fast with phractico, a PHP micro-project designed to accelerate your API projects with simplicity.

composer create-project yknsilva/phractico

phractico was designed with your precious resource in mind: time!

The phractico ideology involves fewer configuration files to get your PHP API working. The Bootstrap file concentrates the entire application configuration for controllers, routing, etc.

To introduce new endpoints in your API, you simply need to create a controller class by implementing the Controller interface and its routes method. Then, describe routing resources to their actions. Finally, map the new controller in ApplicationControllerProvider.php.

Voilà! 🎉

For examples, see ExampleController.

Your database connection must be mapped inside ApplicationDatabaseProvider.php class, which is consumed by bootstrap file when application is initialized.

By default, phractico comes with a SQLite database adapter assuming database file is located at path /path/to/phractico/database/database.sqlite.

If you want to have others adapters, you just need to implement Connection and then mapping your new adapter in ApplicationDatabaseProvider file.

phractico uses a dependency container to manage dependencies throughout the application. The container and its corresponding dependency mapping are declared in ApplicationContainer. During the application's runtime, the dependency container is injected into the application instance and then used in application bootstrap phase.

While phractico includes a simple container, it is designed to support any other dependency injection container that implements the PSR-11, such as PHP-DI.

Go fast with phractico and phpctl:

  • Run composer
phpctl composer install
  • Run a local server
phpctl server 8000 public/
  • Perform an HTTP request to ensure everything works fine!
curl -X GET 'http://localhost:8000/example'
  • Perform an HTTP request to ensure database connection works fine!
    • Note: sqlite3 PHP extension is required for SQLiteAdapter
curl -X POST 'http://localhost:8000/exampleDatabase' \
--header 'Content-Type: application/json' \
--data '{
    "test": "database"
}'

To execute all PHPUnit test suites, run:

phpctl composer test

To execute quality tools, run:

phpctl composer quality

Feel free to explore the project and turn phractico more practical!