A lightweight PSR-15 compliant framework for building HTTP applications with middleware support and dependency injection.
- PHP 8.2, 8.3, or 8.4
- Composer
- Docker (for development environment)
Install the framework as a dependency in your project:
composer require larium/frameworkIf you want to contribute to the framework or run it locally:
-
Clone the repository:
git clone [email protected]:Larium/framework.git cd framework
-
Install dependencies:
composer install
This project uses Docker for consistent development environments across different PHP versions.
The project includes several make commands for common development tasks:
make docker-build- Build Docker image for PHP 8.4make docker-build-8.3- Build Docker image for PHP 8.3make docker-build-8.2- Build Docker image for PHP 8.2
make composer-update- Update dependencies using PHP 8.4 Docker containermake composer-update-8.3- Update dependencies using PHP 8.3 Docker containermake composer-update-8.2- Update dependencies using PHP 8.2 Docker container
make run-tests- Run tests using PHP 8.4 Docker containermake run-tests-8.3- Run tests using PHP 8.3 Docker containermake run-tests-8.2- Run tests using PHP 8.2 Docker container
If you prefer to work without Docker:
-
Install PHP 8.2+ with required extensions:
- bcmath
- zip
- xdebug (for development)
-
Install Composer if not already installed:
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer -
Install dependencies:
composer install
-
Run tests:
./vendor/bin/phpunit tests/
<?php
# public/index.php
declare(strict_types = 1);
use Larium\Framework\Framework;
use Larium\Framework\Middleware\RoutingMiddleware;
use Laminas\Diactoros\ServerRequestFactory;
use Larium\Framework\Middleware\ActionResolverMiddleware;
use Larium\Framework\Provider\ContainerProvider;
require_once __DIR__ . '/../vendor/autoload.php';
(function () {
/** @var ContainerProvider [implement the ContainerProvider interface] */
$containerProvider
$container = $containerProvider->getContainer();
$f = new Framework($container);
$f->pipe(RoutingMiddleware::class, 1);
$f->pipe(ActionResolverMiddleware::class, 0);
$f->run(ServerRequestFactory::fromGlobals());
})();src/- Framework source codetests/- Test suite.docker/- Docker configuration for different PHP versionsbuild/- Build artifacts and coverage reportsvendor/- Composer dependencies
Run the test suite using one of these methods:
Using Make (recommended):
make run-testsUsing PHPUnit directly:
./vendor/bin/phpunit tests/- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
make run-tests - Submit a pull request
MIT License - see LICENSE file for details.