PHPackages                             arsengoian/viper - 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. arsengoian/viper

ActiveLibrary[Framework](/categories/framework)

arsengoian/viper
================

A deployment package of Viper - a simple to use multi-functional PHP MVC framework

0.2(8y ago)1112Apache-2.0PHPPHP &gt;=7.1.0

Since Dec 18Pushed 8y ago1 watchersCompare

[ Source](https://github.com/arsengoian/viper)[ Packagist](https://packagist.org/packages/arsengoian/viper)[ RSS](/packages/arsengoian-viper/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (2)Dependencies (3)Versions (3)Used By (0)

Viper
=====

[](#viper)

Viper is a lightweight universal PHP MVC framework with its own models and templating engine

Starting developing on Viper is as easy as typing in the console:

```
composer create-project arsengoian/viper PROJECT_NAME dev-master

```

and configuring DB credentials

Configuration
-------------

[](#configuration)

The web application is configured by an array of YAML files at `config/` directory. They contain a list of instructions on every setting. `local.yaml` contains configuration related to the current server environment while `global.config` sets up overall application settings.

Settings may be accessed at any time using `Config` class:

```
if (Config::get('DEBUG'))     // From local.yaml -> local.yaml and global.yaml don't need a prefix
    return Config::get('Bots.VERIFY_TOKEN')    // From bots.yaml
```

Features
--------

[](#features)

### YAML routing

[](#yaml-routing)

Requests are routed automatically, for example a GET request to `http://website.com/chairs` will invoke the `get` method of `ChairsController`

Routing example:

```
welcome: DefaultController         # directs DOMAIN/welcome -> DefaultController::get($http_params)
hello: DefaultController.main      # directs DOMAIN/hello   -> DefaultController::main($http_params)
products:                          # 1-level hierarchies are also supported
    parse: DefaultController
    count: DefaultController.main
```

### Easy-to-use controllers and built-in validation

[](#easy-to-use-controllers-and-built-in-validation)

A controller function implementing a POST request:

```
public function post (...$args): ?Viewable
{
    $v = new Required($this -> params());                                 // Create validator
    $v -> email('email');                                                 // Validate "email" field

    Client::registerWithImages($this -> params(), $this -> files());      // Create new model in the database
    return new RedirectView('/');                                         // Redirect to main page
}
```

### Auto-completing models

[](#auto-completing-models)

Viper deals with databases automatically, miminizing the need to edit SQL manually. A YAML setup like this:

```
 allowOverwrite: true

 fields:
  fname: VARCHAR(255) NOT NULL
  lname: VARCHAR(255) NOT NULL
  email: VARCHAR(255) NOT NULL
  age: INT NOT NULL
  img: TEXT NOT NULL
```

will create the needed database structure if needed and update it along with the file if needed.

### Filters

[](#filters)

Will be applied to all routes before any controller actions:

```
class Application extends \Viper\Core\Application
{
    /**
     * Defines the list of filters to be run
     * before any controller actions
     * @return FilterCollection
     */
    protected function declareFilters (): FilterCollection
    {
        return new FilterCollection([
            LocalizationFilter::class,
            Authorization::class
        ]);
    }
}
```

### Logging and utilities

[](#logging-and-utilities)

Viper supports built-in logging and a collection of useful utilities, including caching, advanced string handling etc.

### Caching capabilities

[](#caching-capabilities)

All views and parsed .yaml files are recovered, if possible, from cache

Features in early development
-----------------------------

[](#features-in-early-development)

- Background processes and services
- Windows background tasks
- Viper templating engine
- Console commands
- Full Mysql support
- Other SQL dialects support
- Numerous feature and structure improvements

Contributing and development
----------------------------

[](#contributing-and-development)

Since the framework is on an early stage of development, it may feature structural irreversable changes without reverse compatibility.

Please contribute to the project if you also feel passionate about making PHP development more elegant and intuitive =)

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity49

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 ~63 days

Total

2

Last Release

3052d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6d8ab20cc931cdd85e854b1c05e2064aaf36d9ca92d300db89c06a0f89f1c6ac?d=identicon)[arsengoian](/maintainers/arsengoian)

---

Top Contributors

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

### Embed Badge

![Health badge](/badges/arsengoian-viper/health.svg)

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

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k104.3M844](/packages/laravel-socialite)[laravel/dusk

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

1.9k38.6M289](/packages/laravel-dusk)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)[link-cloud/fast-hyperf

LinkCloud Fast Hyperf

241.2k1](/packages/link-cloud-fast-hyperf)

PHPackages © 2026

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