PHPackages                             easy-tool/easy-tool - 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. easy-tool/easy-tool

ActiveProject[Framework](/categories/framework)

easy-tool/easy-tool
===================

A simple PHP framework built with composer

00PHP

Since Feb 4Pushed 4y ago1 watchersCompare

[ Source](https://github.com/easy-tool-php/easy-tool)[ Packagist](https://packagist.org/packages/easy-tool/easy-tool)[ RSS](/packages/easy-tool-easy-tool/feed)WikiDiscussions main Synced 5d ago

READMEChangelogDependenciesVersions (1)Used By (0)

EasyTool
========

[](#easytool)

This is a simple PHP framework built with [Composer](https://getcomposer.org/).

It uses below libraries:

-
-
-
-
-

and follows below standards:

StandardTitleDescription[PSR-1](https://www.php-fig.org/psr/psr-1/)Basic Coding StandardPassed [PHP\_CodeSniffer](https://github.com/squizlabs/php_codesniffer) checking[PSR-3](https://www.php-fig.org/psr/psr-3/)Logger InterfaceImplements
- `\Psr\Log\AbstractLogger`[PSR-4](https://www.php-fig.org/psr/psr-4/)AutoloaderUse [Composer](https://getcomposer.org/) as dependency management[PSR-6](https://www.php-fig.org/psr/psr-6/)Caching InterfaceImplements
- `\Psr\Cache\CacheItemPoolInterface`
- `\Psr\Cache\CacheItemInterface`[PSR-7](https://www.php-fig.org/psr/psr-7/)HTTP message interfacesImplements
- `\Psr\Http\Message\RequestInterface`
- `\Psr\Http\Message\ResponseInterface`
- `\Psr\Http\Message\StreamInterface`
- `\Psr\Http\Message\UriInterface`[PSR-11](https://www.php-fig.org/psr/psr-11/)Container interfaceImplements
- `\Psr\Container\ContainerInterface`[PSR-12](https://www.php-fig.org/psr/psr-12/)Extended Coding StylePassed [PHP\_CodeSniffer](https://github.com/squizlabs/php_codesniffer) checking[PSR-13](https://www.php-fig.org/psr/psr-13/)Link definition interfacespending[PSR-14](https://www.php-fig.org/psr/psr-14/)Event DispatcherImplements
- `\Psr\EventDispatcher\EventDispatcherInterface`
- `\Psr\EventDispatcher\ListenerProviderInterface`[PSR-15](https://www.php-fig.org/psr/psr-15/)HTTP Server Request HandlersImplements
- `\Psr\Http\Message\ServerRequestInterface`
- `\Psr\Http\Server\RequestHandlerInterface`[PSR-17](https://www.php-fig.org/psr/psr-17/)HTTP FactoriesImplements
- `\Psr\Http\Message\RequestFactoryInterface`
- `\Psr\Http\Message\ResponseFactoryInterface`
- `\Psr\Http\Message\StreamFactoryInterface`
- `\Psr\Http\Message\UriFactoryInterface`[PSR-18](https://www.php-fig.org/psr/psr-18/)HTTP ClientImplements
- `\Psr\Http\Client\ClientInterface`Environment Requirement
-----------------------

[](#environment-requirement)

- PHP 7.4+
- MySQL 5.7+

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

[](#installation)

Create a new folder as project root, execute below command to get source files.

```
composer create-project easy-tool/easy-tool .
```

File Structure
--------------

[](#file-structure)

### Application Structure

[](#application-structure)

DirectoryDescription`app/config`Contains application config files, see [here](#application-config) for more details.`app/modules`Store local customized modules. For example, a customer module may be located at `app/modules/Customer`, with namespace prefix `App\Customer\`.`bin`There is a `run` file which is used to execute console command.`pub`Store files which can be accessed through internet.`var`Store temporary files like cache, log etc.`vendor`Composer library folder.### Module Structure

[](#module-structure)

File structure of each module is flexible, but some directries are still need to follow their rules:

DirectoryDescription`Command`System retrieves instantiable classes, which extend `Symfony\Component\Console\Command\Command`, as console commands.`Controller/Backend`System retrieves backend controller classes from this folder.`Controller/Frontend`System retrieves frontend controller classes from this folder.`Setup`System retrieves instantiable classes, which extend `EasyTool\Framework\App\Module\Setup\AbstractSetup`, as setup scripts on runnig `setup:upgrade` command.`config`Module config files, see [here](#module-config) for more details.Config Files
------------

[](#config-files)

### Application Config

[](#application-config)

FilenameDescription`di.php`Dependency injection configuration, click [here](https://github.com/easy-tool-php/easy-tool/blob/main/app/config/di.php) to see file structure, check [https://docs.laminas.dev/laminas-di/v3/config/](https://docs.laminas.dev/laminas-di/v3/config/#configuration) for more details.`env.php`Environment settings including route name, cache setting, database setting etc., click [here](https://github.com/easy-tool-php/easy-tool/blob/main/app/config/env.php) to see file structure.`events.php`Event listener settings, click [here](https://github.com/easy-tool-php/easy-tool/blob/main/app/config/events.php) to see file structure.`middlewares.php`Middleware class list for handling HTTP request, click [here](https://github.com/easy-tool-php/easy-tool/blob/main/app/config/middlewares.php) to see file structure.`modules.php`Module status. This file will be generated by system when cache is empty or disabled.### Module Config

[](#module-config)

FilenameDescription`api.php`HTTP API route list.`di.php`Dependency injection configuration, check [https://docs.laminas.dev/laminas-di/v3/config/](https://docs.laminas.dev/laminas-di/v3/config/#configuration) for more details.`events.php`Event listener settings, file structure is same with the application one.`module.php`Module informations including `name` and `route` (backend/frontend).

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 78.6% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/9a95bfed0851e384e7659b82f5600191803be8fc6c3f1989f412a347f492bbab?d=identicon)[easy\_tool](/maintainers/easy_tool)

---

Top Contributors

[![zengliwei](https://avatars.githubusercontent.com/u/18208460?v=4)](https://github.com/zengliwei "zengliwei (77 commits)")[![easy-tool-php](https://avatars.githubusercontent.com/u/96854629?v=4)](https://github.com/easy-tool-php "easy-tool-php (21 commits)")

### Embed Badge

![Health badge](/badges/easy-tool-easy-tool/health.svg)

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

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

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