Все ваши приложения будут получены из этого класса или будут использовать классы, которые являются братьями и сестрами этого класса приложения.
Этот класс предоставляет:
Со временем ваше приложение будет расти, и количество маршрутов будет увеличиваться. Таким образом, мы предоставили удобный способ хранения всех маршрутов в автономном файле конфигурации. Таким образом, нет необходимости инициализировать все маршруты в конструкторе объекта приложения (или любого производного класса).
Давайте выясним, как вы можете его использовать.
Прежде всего создать файл конфигурации ./conf/routes.php в вашем каталоге проектов. Это должно выглядеть так:
$ 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 '
]
]
];Обратите внимание, что поле «Метод» не установлено, тогда оно будет дефолт, чтобы получить.
Вы также можете указать свой собственный файл конфигурации.
Затем просто позвоните в Application :: LoadRoutesFromConfig ()
$ app -> loadRoutesFromConfig ( ' ./conf/my-config.php ' );Этот класс обеспечивает простую подпрограмму приложения с более сложным рендерингом и обработкой ошибок.
В классе приложения маршруты могут возвращать только строки. Но класс Commonapplication позволяет вернуть массивы строки, которые будут размещены в заполнителе шаблона.
Простой пример:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => ' Route main '
];
}
}Здесь обработчик маршрута генерирует две части страницы / Simple -Page / - «Title» и «Main». Эти две части будут вставлены в {title} и {main} заполнители соответственно.
Более сложный пример:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => new View ( ' Generated main content ' )
];
}
}Здесь мы передаем экземпляр представления класса (или любого класса, полученного из просмотра), к сборщику страницы приложения. Это вызовет просмотр :: рендеринговый метод, который должен возвращать скомпилированное HTML -контент.
Вы также можете сохранить маршруты AL в конфигурации. Вы можете использовать конфигурации JSON:
[
{
"route" : "/route1/" ,
"callback" : "route1" ,
"method" : "GET"
} ,
{
"route" : "/route2/" ,
"callback" : "route2" ,
"method" : [ "GET" , "POST" ]
}
]Эти данные должны храниться в режиме «./conf/» вашего проекта. Или загружать конфигурации явно, как показано ниже (с помощью метода LoadRoutesFromConfig).
И нам также нужны эти методы в классе приложения.
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
];
}
}Обратите внимание, что вы можете загрузить несколько конфигураций с одним вызовом метода LoadRoutesfromConfigs
function __construct ( $ template )
{
parent :: __construct ( $ template );
$ this -> loadRoutesFromConfigs ([ ' ./conf/my/routes.json ' , ' ./conf/my-routes.php ' ]);
}Или то же самое:
function __construct ( $ template )
{
parent :: __construct ( $ template );
$ this -> loadRoutesFromDirectory ( ' ./conf ' );
} Вы можете создать файл со списком сообщений, которые будут заменены в action-message переменной шаблона
Этот файл должен храниться в каталоге %your-application-class-directory%/res/action-messages.json
Затем, если класс найдет параметр $_GET['action-message'] , то замена action-message будет запускается.
Вы можете просто выводить содержимое файла *.tpl в качестве общего представления. Это может быть полезно, если вам нужно отображать статические страницы или статические детали страницы. Это позволит вам избежать создания отдельных классов и отдельных методов просмотра для этих целей.
Это довольно просто:
// here $template is an instance of the MezonHtmlTemplateHtmlTemplate class
// and 'block-name' is a block name in this class
$ view = new Mezon Application ViewStatic ( $ template , ' block-name ' );Для получения более подробной информации о шаблонах Mezon видите
ТБА