PHPackages                             emsifa/evo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. emsifa/evo

ActiveLibrary[Framework](/categories/framework)

emsifa/evo
==========

Evolutionize the way you write Laravel code

v0.4.6(4y ago)18691[5 issues](https://github.com/emsifa/evo/issues)MITPHPPHP ^8.0

Since Aug 23Pushed 4y ago1 watchersCompare

[ Source](https://github.com/emsifa/evo)[ Packagist](https://packagist.org/packages/emsifa/evo)[ Docs](https://github.com/emsifa/evo)[ GitHub Sponsors](https://github.com/emsifa)[ RSS](/packages/emsifa-evo/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (13)Versions (18)Used By (0)

 [![Logo](https://raw.githubusercontent.com/emsifa/evo/main/logo.svg)](https://raw.githubusercontent.com/emsifa/evo/main/logo.svg)

[![Latest Version on Packagist](https://camo.githubusercontent.com/7848bc59e95c122a14e20fa59d61b0c35dfc38d7177d08b239a56fb6a22ad77b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f656d736966612f65766f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/emsifa/evo)[![GitHub Tests Action Status](https://camo.githubusercontent.com/9a7313cceae673f67a980536190bb23e3980bb866b1a0b8619994fcbdf30e856/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f656d736966612f65766f2f72756e2d74657374733f6c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/emsifa/evo/actions?query=workflow%3Arun-tests+branch%3Amain)[![Coverage Status](https://camo.githubusercontent.com/d25603aa60dbb97d912625801503b73cbc2d9271ca7247d62deaf28372bf964a/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f656d736966612f65766f3f7374796c653d666c61742d73717561726526746f6b656e3d36444a3653394d4f474f)](https://app.codecov.io/github/emsifa/evo)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/62c80678f03f085ffc3185eb1dcde224f574ebacda6e245c0614f564daf2cbdd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f656d736966612f65766f2f436865636b253230262532306669782532307374796c696e673f6c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/emsifa/evo/actions?query=workflow%3A%22Check+%26+fix+styling%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/0325db6d467ca540a08708d2b2bbf3b8a67037f26deff510f19593f7cc059995/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f656d736966612f65766f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/emsifa/evo)

---

Evo is a Laravel package that leverages PHP 8 features. It change the way you write Laravel app into something like this:

```
#[RoutePrefix('users')]
class UserController extends Controller
{
    #[Get]
    public function index(
        #[Query] int $limit,
        #[Query] int $offset,
        #[Query('q')] string $keyword,
    ): UserPaginationResponse
    {
        // your logic goes here
    }

    #[Post]
    public function store(
        #[Body] CreateUserDto $data
    ): StoreUserResponse
    {
        // your logic goes here
    }

    #[Put('{id}')]
    public function update(
        #[Param] int $id,
        #[Body] UpdateUserDto $data,
    ): UpdateUserResponse
    {
        // your logic goes here
    }
}
```

Motivation
----------

[](#motivation)

Defining input and output types in a head of a function will trigger your brain to specifies input and output types before writing the logic. So when it comes to write the logic, you know exactly what you have, where it comes, and what to return.

Also, by defining input and output type in this way, not only you and your teammate would easily read the specifications. Machines too. That is why Evo can provide some amazing features such as auto validation, auto casting, live swagger documentation, mocking API, etc.

Features
--------

[](#features)

- Register routes using attributes.
- Apply middleware using attribute.
- Route prefixing using attribute.
- Inject request data (Header, Param, Cookie, Body, Query) into parameters using attribute.
- Automatic type casting.
- Automatic type validation.
- Define validation rules directly in DTO properties using attribute.
- Custom value caster.
- Generate DTO file.
- Generate Response file.
- Generate Swagger UI and OpenAPI file.
- Mocking API.

Installation
------------

[](#installation)

> Evo currently is still in the development, it could have some breaking changes before the final release.

You can install the package via composer:

```
composer require emsifa/evo:dev-main
```

Documentation
-------------

[](#documentation)

See [https://www.emsifa.com/evo](https://www.emsifa.com/evo/).

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Muhammad Syifa](https://github.com/emsifa)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance14

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

17

Last Release

1726d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bf2e85e5574fc28f87c28311a5ad7bcbec884e9ea21e88d63639f46ed6af72d1?d=identicon)[emsifa](/maintainers/emsifa)

---

Top Contributors

[![emsifa](https://avatars.githubusercontent.com/u/6297931?v=4)](https://github.com/emsifa "emsifa (510 commits)")

---

Tags

laravelevoemsifa

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/emsifa-evo/health.svg)

```
[![Health](https://phpackages.com/badges/emsifa-evo/health.svg)](https://phpackages.com/packages/emsifa-evo)
```

###  Alternatives

[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

77022.3M150](/packages/laravel-mcp)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

816333.3k3](/packages/defstudio-telegraph)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M131](/packages/roots-acorn)[illuminate/routing

The Illuminate Routing package.

1419.2M3.0k](/packages/illuminate-routing)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5021.9k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
