Recommend this page to a friend! |
Download .zip |
Info | Documentation | View files (24) | Download .zip | Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2020-05-21 (3 months ago) | Not yet rated by the users | Total: 34 | All time: 9,970 This week: 336 |
Version | License | PHP version | Categories | |||
mezon-application 1.0 | MIT/X Consortium ... | 5 | HTTP, PHP 5, Design Patterns |
Description | Author | |
This package can create applications from configuration files. |
All your applications will be derived from this class or will be using classes wich are siblings of this Application class.
This class provieds:
With time your application will grow and number of routes will increase. So we have provided convinient 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' );
This class provides simple aplication routine. Using this class you can create veri simple applications with the basic template wich looks like black text on white background.
It can be simply used for prototyping.
In Application class routes may return only strings. But CommonApplication class allows you to return arrays of string wich 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 wich must return compiled html content.
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');
}
Files |
File | Role | Description | ||
---|---|---|---|---|
conf (2 files) | ||||
Tests (8 files, 1 directory) | ||||
.travis.yml | Data | Auxiliary data | ||
AjaxApplication.php | Class | Class source | ||
AjaxMethodsTrait.php | Class | Class source | ||
Application.php | Class | Class source | ||
CommonApplication.php | Class | Class source | ||
composer.json | Data | Auxiliary data | ||
composer.lock | Data | Auxiliary data | ||
Controller.php | Class | Class source | ||
ControllerInterface.php | Class | Class source | ||
phpunit.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation | ||
View.php | Class | Class source | ||
ViewInterface.php | Class | Class source |
Files | / | Tests |
File | Role | Description | ||
---|---|---|---|---|
res (1 directory) | ||||
ApplicationUnitTest.php | Class | Class source | ||
CommonApplicationUnitTest.php | Class | Class source | ||
ControllerUnitTest.php | Class | Class source | ||
TestInvalidRoutes1.php | Aux. | Auxiliary script | ||
TestInvalidRoutes2.php | Aux. | Auxiliary script | ||
TestRoutes.json | Data | Auxiliary data | ||
TestRoutes.php | Aux. | Auxiliary script | ||
ViewUnitTest.php | Class | Class source |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.