mezon/common-application

通用基本目的应用程序

1.1.5 2022-06-27 15:12 UTC

This package is auto-updated.

Last update: 2024-09-27 19:47:44 UTC


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');
	}