PHPackages                             mezon/application - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. mezon/application

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

mezon/application
=================

Small application script

3.0.19(2mo ago)84.9k13MITPHPPHP &gt;=8.2.0CI failing

Since Feb 18Pushed 2mo ago2 watchersCompare

[ Source](https://github.com/alexdodonov/mezon-application)[ Packagist](https://packagist.org/packages/mezon/application)[ Docs](https://github.com/alexdodonov/mezon-application)[ RSS](/packages/mezon-application/feed)WikiDiscussions master Synced 6d ago

READMEChangelogDependencies (14)Versions (81)Used By (3)

Base application class
======================

[](#base-application-class)

[![Build Status](https://camo.githubusercontent.com/8a64e17ea2d199d2402da0bb5cef99bdf274d30729e2f225b486250de6f60b0e/68747470733a2f2f7472617669732d63692e636f6d2f616c6578646f646f6e6f762f6d657a6f6e2d6170706c69636174696f6e2e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/alexdodonov/mezon-application) [![codecov](https://camo.githubusercontent.com/3eaf2d88c4e14cddbf85e577962b3b3cf0b191c0b042a3facbb84d2cb6c8296a/68747470733a2f2f636f6465636f762e696f2f67682f616c6578646f646f6e6f762f6d657a6f6e2d6170706c69636174696f6e2f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/alexdodonov/mezon-application) [![Scrutinizer Code Quality](https://camo.githubusercontent.com/f077bef05f70dc38af6c151dc1357cde2765f2c9c658299e61f475760e7d6924/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f616c6578646f646f6e6f762f6d657a6f6e2d6170706c69636174696f6e2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/alexdodonov/mezon-application/?branch=master)

Intro
-----

[](#intro)

All your applications will be derived from this class or will be using classes which are siblings of this Application class.

Functionality
-------------

[](#functionality)

This class provides:

- routing
- transformation actionActionName methods into static routes /action-name/ which handles GET and POST methods
- loading routes from config file (php or json)

### Loading routes from config file

[](#loading-routes-from-config-file)

With time your application will grow and number of routes will increase. So we have provided convenient way to store all routes in a standalone config file. So it is not necessary to initialize all routes in an Application (or any derived class) object's constructor.

Let's find out how you can use it.

First of all create config file ./conf/routes.php in your projects directory. It must look like this:

```
$callbackProvider = new SomeCallbackClass();

return
    [
        [
            'route' => '/news/' ,  // your route
            'callback' => 'displayNewsLine'    // this must be the method name of your
                                               // Application derived class
        ] ,
        [
            'route' => '/news/[i:news_id]/' ,    // your route
            'callback' => 'displayExactNews' ,   // this must be the method name of your
            'method' => 'POST'                   // Application derived class
        ] ,
        [
            'route' => '/some-route/' ,
            'method' => 'GET' ,
            'callback' => [  // here we specify callback as pair [object, method]
                callbackProvider ,
        	'someMethod'
            ]
        ]
    ];
```

Note that the 'method' field is not set then it will be defaulted to GET.

You can also specify your own config file.

Then just call Application::loadRoutesFromConfig()

```
$app->loadRoutesFromConfig( './conf/my-config.php' );
```

Common application class
------------------------

[](#common-application-class)

### Intro

[](#intro-1)

This class provides simple application routine with more complex rendering and error handling.

### Extended routes processing

[](#extended-routes-processing)

In [Application](https://github.com/alexdodonov/mezon-application) class routes may return only strings. But CommonApplication class allows you to return arrays of string which will be placed in the template placeholders.

Simple example:

```
class ExampleApplication extends CommonApplication
{
    /**
     * Constructor.
     */
    function __construct( $template )
    {
        parent::__construct( $template );
    }

    function actionSimplePage()
    {
        return [
            'title' => 'Route title' ,
            'main' => 'Route main'
        ];
    }
}
```

Here route's handler generates two parts of the page /simple-page/ - 'title' and 'main'. These two part will be inserted into {title} and {main} placeholders respectively.

More complex example:

```
class ExampleApplication extends CommonApplication
{
    /**
     * Constructor.
     */
    function __construct($template)
    {
        parent::__construct($template);
    }

    function actionSimplePage()
    {
        return [
            'title' => 'Route title' ,
            'main' => new View('Generated main content')
        ];
    }
}
```

Here we pass instance of the class View (or any class derived from View) to the application page compilator. It will call View::render method which must return compiled html content.

### Routes config

[](#routes-config)

You can also keep al routes in configs. You can use json configs:

```
[
    {
        "route": "/route1/",
	"callback": "route1",
	"method": "GET"
    },
    {
	"route": "/route2/",
	"callback": "route2",
	"method": ["GET","POST"]
    }
]
```

This data must be stored in the './conf/' dir of your project. Or load configs explicitly as shown below (using method loadRoutesFromConfig).

And we also need these methods in the application class.

```
class ExampleApplication extends CommonApplication
{
    /**
     * Constructor.
     */
    function __construct($template)
    {
        parent::__construct($template);

	// loading config on custom path
	$this->loadRoutesFromConfig('./my-routes.json');
    }

    function route1()
    {
        return [
            // here result
        ];
    }

    function route2()
    {
        return [
            // here result
        ];
    }
}
```

Note that you can load multiple configs with one call of the method loadRoutesFromConfigs

```
function __construct($template)
{
    parent::__construct($template);

    $this->loadRoutesFromConfigs(['./conf/my/routes.json', './conf/my-routes.php']);
}
```

Or the same:

```
function __construct($template)
{
    parent::__construct($template);

    $this->loadRoutesFromDirectory('./conf');
}
```

Action messages
---------------

[](#action-messages)

You can create file with the list of messages which will be substituted in the template variable `action-message`

This file must be stored in the directory `%your-application-class-directory%/res/action-messages.json`

Then if the class will find `$_GET['action-message']` parameter, then `action-message` substitution will be triggered.

View
====

[](#view)

Static view
-----------

[](#static-view)

You can simply output content of the \*.tpl file as common view. It can be usefull if you need to render static pages or static page parts. It will let you to avoid creating separate class and separate view methods for these purposes.

It is quite simple:

```
// here $template is an instance of the \Mezon\HtmlTemplate\HtmlTemplate class
// and 'block-name' is a block name in this class
$view = new \Mezon\Application\ViewStatic($template, 'block-name');
```

For more details about Mezon templates [see](https://github.com/alexdodonov/mezon-html-template)

Controller
==========

[](#controller)

tba

###  Health Score

56

—

FairBetter than 98% of packages

Maintenance86

Actively maintained with recent releases

Popularity24

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity84

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 99.1% 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 ~28 days

Recently: every ~233 days

Total

80

Last Release

72d ago

Major Versions

1.1.30 → 2.0.02020-11-16

2.1.4.x-dev → 3.0.0.x-dev2021-02-11

PHP version history (2 changes)1.0.1PHP &gt;=7.2.0

3.0.16PHP &gt;=8.2.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/14943896?v=4)[alexdodonov](/maintainers/alexdodonov)[@alexdodonov](https://github.com/alexdodonov)

---

Top Contributors

[![alexdodonov](https://avatars.githubusercontent.com/u/14943896?v=4)](https://github.com/alexdodonov "alexdodonov (109 commits)")[![lolix-notepad](https://avatars.githubusercontent.com/u/75387306?v=4)](https://github.com/lolix-notepad "lolix-notepad (1 commits)")

---

Tags

applicationmvcmvc-frameworkmvp-architecturemvp-patternphpphp-frameworkphp-mvcphp-mvc-frameworkweb-application

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/mezon-application/health.svg)

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

###  Alternatives

[nabao/laravel-lock

高性能, 分布式, 并发抢占锁, 队列锁

271.5k](/packages/nabao-laravel-lock)

PHPackages © 2026

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