PHPackages                             ryprop/nife - 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. ryprop/nife

ActiveLibrary[Framework](/categories/framework)

ryprop/nife
===========

Modern, no-bullshit MVC framework for PHP

0.2.12(1y ago)417.8k13PHPPHP &gt;=5.2

Since Jan 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ryprop/nife)[ Packagist](https://packagist.org/packages/ryprop/nife)[ Docs](http://www.nife-framework.org)[ RSS](/packages/ryprop-nife/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (1)Versions (15)Used By (3)

The Nife PHP framework
----------------------

[](#the-nife-php-framework)

Unlike many PHP MVC frameworks, Nife does not force you to code in a brittle, badly-defined subset of PHP. Rather, it is a set of simple classes and interfaces that solve common problems and provide commonly-needed abstractions in a straightforward and conventional way. Copy over the classes that you want, implement the interfaces with your own backends as needed, and ignore the parts that aren't useful to your project.

### Philosophy

[](#philosophy)

- To maximize reusability, interfaces should be designed to handle a single use case, and provide only a single way to use them.
- Interfaces should be defined according to how they are used, not how they are initialized. e.g. setXXX methods are generally inappropriate unless part of a storage API.
- Objects should be as stateless as possible. See:
- Interfaces should not define 'convenience methods'. Convenience utility functions may be provided, instead.
- Don't make assumptions about the environment within which objects are being used.
- Don't use global state.
- Methods whose implementations are likely to be I/O bound should return futures.
- When practical, take advantage of language features rather than introducing new APIs. This is somewhat difficult in PHP as the 'language features' are generally pretty terrible, but e.g. clean up resources in \_\_destruct() rather than having a separate close() method, use functions instead of single-method classes when their purpose is obvious enough. (I may change my mind about this point.)
- Follow standard naming and documentation conventions.

Getting Started
---------------

[](#getting-started)

### With Composer

[](#with-composer)

If you already have a Composer-based project, add Nife to the requirements in composer.json:

```
{
  "require": {
    "php": ">=5.2.0",
    "ryprop/nife": "^0.2.10"
  },
  "minimum-stability": "dev",
}
```

Nife comes with a program, `bin/new-nife-project`, that can generate a bit of boilerplate to get you started. This will generate `composer.json` if it is not already present. If you use the above `composer.json` example to install Nife, delete it before running `vendor/ryprop/nife/bin/new-nife-project`.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance43

Moderate activity, may be stable

Popularity28

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 68.3% 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 ~310 days

Recently: every ~794 days

Total

14

Last Release

457d ago

PHP version history (4 changes)0.0.1PHP &gt;=5.2.0

0.2.1PHP ~5.2.0

0.2.2PHP ^5.2.0

0.2.4PHP &gt;=5.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/0f248db52a2eadcf1197b03ea0f6ef99171892ae87f80c12e3fa44bef996b3c8?d=identicon)[ryprop](/maintainers/ryprop)

---

Top Contributors

[![TOGoS](https://avatars.githubusercontent.com/u/57142?v=4)](https://github.com/TOGoS "TOGoS (28 commits)")[![ryprop](https://avatars.githubusercontent.com/u/5049635?v=4)](https://github.com/ryprop "ryprop (13 commits)")

---

Tags

mvcnife

### Embed Badge

![Health badge](/badges/ryprop-nife/health.svg)

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

###  Alternatives

[laminas/laminas-mvc

Laminas's event-driven MVC layer, including MVC Applications, Controllers, and Plugins

17224.4M365](/packages/laminas-laminas-mvc)

PHPackages © 2026

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