PHPackages                             andreimosman/mvczitto - 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. andreimosman/mvczitto

ActiveLibrary

andreimosman/mvczitto
=====================

Very small MVC frameworking using filesystem routing.

v0.6(3y ago)0121MITPHPPHP &gt;=7.4.0

Since Jun 11Pushed 3y ago1 watchersCompare

[ Source](https://github.com/andreimosman/mvczitto)[ Packagist](https://packagist.org/packages/andreimosman/mvczitto)[ RSS](/packages/andreimosman-mvczitto/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)DependenciesVersions (7)Used By (0)

MVCzitto
========

[](#mvczitto)

[![Latest Stable Version](https://camo.githubusercontent.com/8171aa0eb7a5c5bc6ff3aa9fbebff7e9981654ca0fab2d30c444e2530acbb67a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e647265696d6f736d616e2f6d76637a6974746f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/andreimosman/mvczitto)[![Minimum PHP Version](https://camo.githubusercontent.com/eb773fa94283cbea6c7b192d460983a781ae4a16409af56d109fe3e8e71ab6c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344253230372e342d3838393242462e7376673f7374796c653d666c61742d737175617265)](https://php.net/)

MVCzitto is a framework for PHP that allows you to build web applications in a simple and easy way.

Instead of traditional OO Based MVC, we decided to implement MVC using File System Routing.

The idea behing this is to write code using PHP as pure as possible, but providing some patterns and organization.

Two things motivated me to do it:

- The nextjs routing
- Rasmus Lerdorf said "PHP Frameworks all suck". I'm trying to create this fremework as less frameworky as possible.

HOWTO
-----

[](#howto)

### Add via composer

[](#add-via-composer)

```
composer create-project andreimosman/mvczitto foldername

```

Please refer to the [Composer](https://getcomposer.org/) website for instructions on how to install it on your platform if you don't have it. Alternatively, you may also download Frameworkitto from the [releases page](https://github.com/andreimosman/mvczitto/releases) and export it to your project's main folder.

### Docker development environment

[](#docker-development-environment)

At the folder `docker-dev-environment` you can call `firstrun.sh` to create the development environment using docker compose.

Please refer to the [Docker](https://www.docker.com/get-started) website for instructions on how to install it on your platform if you don't have it.

Getting Started with MVCzitto
-----------------------------

[](#getting-started-with-mvczitto)

### The app folder contain more instructions and also few samples

[](#the-app-folder-contain-more-instructions-and-also-few-samples)

```
app
├── index.php (entry point - where de dependency injection is done)
├── config.php (configuration file)
├── assets
│   ├── css
│   │   └── style.css
│   └── images
│       └── logo-mvczitto.png
├── controllers
│   ├── authenticated (controllers that require authentication)
│   │   ├── dashboard
│   │   │   └── index.php
│   │   ├── index.php
│   │   └── user
│   │       ├── @(post)new.php
│   │       ├── edit
│   │       │   ├── @(put,patch)[id].php
│   │       │   └── [id].php
│   │       ├── logout.php
│   │       ├── new.php
│   │       └── profile.php
│   └── open (controllers that don't require authentication)
│       ├── gettingstarted
│       │   └── index.php
│       ├── index.php
│       └── user
│           ├── @(post)forgotpassword.php
│           ├── @(post)login.php
│           ├── @(post)signup.php
│           ├── forgotpassword.php
│           ├── index.php
│           ├── login.php
│           └── signup.php
├── models (filesystem base models)
│   └── users
│       ├── create.php
│       ├── delete.php
│       ├── read.php
│       └── update.php
└── views (follows the same pattern as controllers)
    ├── authenticated
    │   ├── footer.php
    │   ├── header.php
    │   └── user
    │       └── edit
    │           └── [id].php
    └── open
        ├── footer.php
        ├── gettingstarted
        │   └── index.php
        ├── header.php
        └── user
            ├── forgotpassword.php
            ├── login.php
            └── signup.php

```

### Routing verbs

[](#routing-verbs)

The verb set by default is `GET` but you can specify the verb at the begining of the filename inside `@()`, such as `@(post)new.php`

### Authentication

[](#authentication)

The folders `authenticated` and `open` means that the route is valid on user is authenticated or not respectively.

The super simple authentication schema is:

```
$auth = \MVCzitto\Application\Authentication::getInstance()

$somethingNotNull = "WHAT EVER YOU WANT. OBJECTS, ARRAYS, STRINGS";
$auth->setAuthenticationData($somethingNotNull);

```

By doing this `$auth->isAuthenticated()` will return true;

You can logout by calling `$auth->unsetAuthenticationData()`

Check `app/controllers/open/user/@(post)login.php` and `app/controllers/authenticated/user/logout.php`

### File system models

[](#file-system-models)

```
├── models
    └── users
        ├── create.php
        ├── delete.php
        ├── read.php
        └── update.php

```

To access then on controllers you can just call `$models->nameOfTheController`. Check `app/controllers/open/user/@(post)login.php`:

```
$usersModel = $models->users; // Load the model
$user = $usersModel->read(['email' => $email]); // Find the user

```

It executes the snippet located at `app/models/users/read.php`.

### The main index.php

[](#the-main-indexphp)

`app/index.php` contains the entry point of the application and the dependency injector.

### File System CLI Scripts

[](#file-system-cli-scripts)

In the same way `controllers` and `models` works, you can create CLI commands, accessible through `./app/cli`.

A few dummy examples where added to app:

```
app/console
└── backup
    ├── database.help
    ├── database.php
    └── uploaded-files.php

```

#### Usage:

[](#usage)

```
$ ./cli

No command specified.

Usage:

    ./cli  []

Available commands:

    backup/database
    backup/uploaded-files

```

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity42

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

Total

6

Last Release

1420d ago

### Community

Maintainers

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

---

Top Contributors

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

---

Tags

frameworkmvcphpsimple

### Embed Badge

![Health badge](/badges/andreimosman-mvczitto/health.svg)

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

PHPackages © 2026

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