rith-1437 / zeroping
ZeroPing is a lightweight, modern PHP framework with a clean MVC architecture, dependency injection, multi-driver ORM, validation, caching, queues, a task scheduler, and batteries-included CLI tooling. New projects run on SQLite with zero configuration.
Fund package maintenance!
Requires
- php: >=8.1 <8.6
- composer-runtime-api: ^2.0
- ext-ctype: *
- ext-fileinfo: *
- ext-hash: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-pdo: *
- ext-pdo_mysql: *
- ext-tokenizer: *
Requires (Dev)
- phpstan/phpstan: ^2.2
- phpunit/phpunit: ^13.2
- squizlabs/php_codesniffer: ^3.10
Suggests
- ext-bcmath: Required for bcrypt password hashing on some systems
- ext-pdo_pgsql: Required for PostgreSQL database support
- ext-pdo_sqlite: Required for SQLite database support (default driver)
- ext-redis: Recommended for Redis cache and session drivers
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-01 16:51:01 UTC
README
ZeroPing
Clean. Expressive. Familiar.
A modern PHP framework built from scratch.
Introduction
ZeroPing is a lightweight, modern PHP framework built entirely from scratch — no third-party runtime dependencies, no configuration required to get started, and no hidden magic you can't trace. It ships with a clean MVC architecture, a fast dependency-injection container, an expressive Active Record ORM, fluent validation, multi-driver caching, a background queue, a task scheduler, and developer-friendly CLI tooling — all written by hand, all in one place.
The philosophy is simple: a framework should feel familiar, stay out of your way, and give you the tools to build anything without pulling in a forest of packages. ZeroPing is designed to be readable, hackable, and enjoyable to work with at any scale.
It is free, open-source, and created by Rin Nairith.
What makes ZeroPing different?
Zero third-party runtime dependencies. The entire framework — routing, ORM, DI container, validation, cache, queue, scheduler, encryption, and more — is implemented from scratch. Your production bundle carries no surprise transitive packages.
Zero configuration to run.
Clone the repo, run php zero serve, and you have a working application on localhost:1437. Sane defaults are baked in; you only configure what you intentionally want to change.
MVC + DI + ORM, all from scratch. Most "lightweight" frameworks still delegate their ORM or container to a third-party library. ZeroPing doesn't. Every layer is purpose-built, coherent, and consistent in style.
A full developer experience out of the box.
Code generation, a debug toolbar, route listing, environment verification, and a built-in development server are all available via the php zero CLI — no separate toolchain required.
Features
| Category | Features |
|---|---|
| Architecture | MVC, Dependency Injection, Service Providers, Middleware Pipeline |
| Routing | Static & Dynamic Routes, Route Groups, Prefixes, Named Routes |
| Database | ORM with Relationships, Query Builder, Migrations, Seeding |
| Validation | Fluent Validator, FormRequest, 20+ Built-in Rules |
| Security | CSRF Protection, Encryption, Rate Limiting, Hashing |
| Performance | File/Array/Database Cache, Route Caching, Config Caching |
| Background | Queue with Sync/Database Drivers, Task Scheduler |
| Developer Experience | CLI Tooling, Starter Templates, Debug Toolbar, Logging |
| Testing | PHPUnit Integration, HTTP Assertions, Database Transactions |
Installation
Zero CLI (recommended):
php zero new my-app
cd my-app
php zero serve
Composer:
composer create-project rith-1437/zeroping my-app
cd my-app
php zero serve
Open http://localhost:1437.
Quick Start
1. Define a route (config/routes.php):
use App\Core\Routing\Router; use App\Controllers\GreetingController; Router::get('/hello', [GreetingController::class, 'index']);
2. Create a controller (app/Controllers/GreetingController.php):
<?php namespace App\Controllers; use App\Core\View\Controller; class GreetingController extends Controller { public function index(): string { return view('greeting', [ 'name' => config('app.name'), ]); } }
3. Create a view (views/greeting.php):
<h1>Hello from <?= e($name) ?>!</h1>
Start the server and visit your page:
php zero serve
# open http://localhost:1437/hello
CLI
ZeroPing ships with a powerful php zero CLI for code generation and project management.
Project
php zero serve # Start the development server (default: port 1437) php zero serve 8080 # Start on a custom port php zero about # Display framework info and environment summary php zero doctor # Verify environment requirements php zero route:list # List all registered routes with methods and names
Code Generation
php zero make:controller PostController # Generate a controller php zero make:model Post # Generate a model php zero make:migration create_posts_table # Generate a migration file php zero make:seeder PostSeeder # Generate a database seeder php zero make:command SendEmailsCommand # Generate a console command php zero make:test PostControllerTest # Generate a PHPUnit test class php zero make:auth # Scaffold authentication (login, register, etc.)
Database
php zero migrate # Run pending migrations php zero migrate:rollback # Roll back the last batch of migrations php zero migrate:fresh # Drop all tables and re-run all migrations php zero db:seed # Run database seeders
Utilities
php zero publish # Publish framework assets for customization php zero new my-app # Create a new ZeroPing project
Documentation
Full documentation is available at zero-ping.duckdns.org:
| Page | Description |
|---|---|
| Introduction | What ZeroPing is and why it exists |
| Installation | Install and configure ZeroPing |
| Getting Started | Build your first app |
| CLI Reference | Complete CLI command reference |
| Database & ORM | Models, relationships, migrations |
| Validation | Rules, FluentValidator, FormRequest |
| Caching | File, array, and database cache |
| Queues | Background job processing |
| Scheduler | Task scheduling |
| Security | Encryption, hashing, CSRF |
| Testing | Writing and running tests |
| Best Practices | Recommended patterns and conventions |
| Deployment | Deploying ZeroPing to production |
Ecosystem
ZeroPing is more than a framework — it's a growing ecosystem of tools and services.
| Product | Description | Status |
|---|---|---|
| Framework | The core PHP framework | Stable |
| CLI | php zero developer toolchain |
Stable |
| Arena | Benchmark dashboard, framework comparisons, performance charts, interactive playground | Stable |
| Packages | First-party and community packages | Stable |
| Docs | Full documentation website | Stable |
| ZeroPing Deploy | One-command deployment tooling | Preview |
| ZeroPing Studio | Visual project manager and GUI | Preview |
| ZeroPing Cloud | Managed hosting for ZeroPing apps | Coming Soon |
| ZeroPing Forge | Server provisioning and management | Coming Soon |
| Showcase | Apps built with ZeroPing | Growing |
Contributing
Contributions are welcome and appreciated. Here's how to get started:
- Fork the repository and clone it locally.
- Install dependencies:
composer install - Run the test suite to confirm everything passes:
composer test - Run static analysis:
composer static-analysis
- Make your changes, add tests where relevant, and open a pull request.
Please read the contribution guide before submitting. All contributors are expected to follow the Code of Conduct.
Roadmap
Planned features and improvements for upcoming releases:
- GraphQL support — first-party query layer on top of the existing ORM
- WebSocket support — real-time events without external dependencies
- Rate limiter improvements — sliding window algorithm and Redis driver
- Improved CLI scaffolding — interactive prompts for all
make:*commands - ZeroPing Cloud — managed hosting with zero-config deployment
- ZeroPing Forge — automated server provisioning and management
- Expanded test coverage — target 90%+ coverage across all core modules
See the GitHub Issues and Discussions for the full roadmap and to suggest features.
License
ZeroPing is open-source software licensed under the MIT license.