mezon / common-application
通用基本目的应用程序
1.1.5
2022-06-27 15:12 UTC
Requires
- php: >=7.2.0
- mezon/application: 3.0.*
- mezon/html-template: >=1.1.10 <1.2.0
Requires (Dev)
- infection/infection: ^0.21.5
- mezon/utils: 1.0.*
- mezon/view: 1.2.*
- phpunit/phpunit: ^8.5
- vimeo/psalm: ^4.2
README
简介
此类提供具有更复杂渲染和错误处理的简单应用程序例程。
扩展路由处理
在Application类中,路由可能只返回字符串。但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') ]; } }
此处我们将View类的实例(或任何从View派生的类)传递给应用程序页面编译器。它将调用View::render方法,该方法必须返回编译后的HTML内容。
路由配置
您还可以在配置中保留所有路由。您可以使用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'); }