Note: This framework is not stable yet.
Aphiria is a suite of small, decoupled PHP libraries that make up a REST API framework. It simplifies content negotiation without bleeding into your code, allowing you to write expressive code. Aphiria also provides the following functionality out of the box:
- Automatic content negotiation of your POPOs
- One of the fastest, most feature-full routers in PHP
- A modular way of building your apps from reusable components
- An extensible authentication scheme
- A policy-based authorization control system
- A DI container with binders to simplify configuring your app
- A model validator for your POPOs
- Support for route and validation attributes
// Define some controller endpoints
class UserController extends Controller
{
public function __construct(private IUserService $users) {}
#[Post('/users')]
public function createUser(User $user): IResponse
{
$this->users->create($user);
return $this->created("/users/{$user->id}", $user);
}
#[Get('/users/:id')]
#[AuthorizeRoles('admin')]
public function getUserById(int $id): User
{
return $this->users->getById($id);
}
}
// Bind your dependency
$container->bindInstance(IUserService::class, new UserService());
// Run an integration test
$postResponse = $this->post('/users', new User('Dave'));
$user = $this->readResponseBodyAs(User::class, $postResponse);
$admin = (new PrincipalBuilder('example.com'))->withRoles('admin')
->build();
$getResponse = $this->actingAs($admin, fn () => $this->get("/users/$user->id"));
$this->assertParsedBodyEquals($user, $getResponse);
Create an Aphiria app via Composer:
composer create-project aphiria/app --prefer-dist --stability dev
Refer to the documentation for more details.
Full documentation is available at the Aphiria website.
- PHP >= 8.3
We appreciate any and all contributions to Aphiria. Please read the documentation to learn how to contribute.
If you have general questions or comments about Aphiria, join our GitHub Discussions.
Aphiria is organized as a monorepo. Each library is contained in src/{library}, and contains src and tests directories.
This software is licensed under the MIT license. Please read the LICENSE for more information.
Aphiria was created and primarily written by David Young.