joomla/controller

Joomla 控制器包

3.0.1 2024-08-15 17:58 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

接口

Controller\ControllerInterface

Controller\ControllerInterface 是一个接口,要求类实现以下方法

  • execute
  • getApplication
  • getInput
  • setApplication
  • setInput

Controller\AbstractController

构造

Controller\AbstractController 的构造函数接收一个可选的 Joomla\Input\Input 对象和一个可选的 Joomla\Application\AbstractApplication 对象。一个或另一个可以省略,但如果没有设置而使用 getApplicationgetInput 将会抛出异常。

使用

Controller\AbstractController 类是抽象的,因此不能直接使用。派生类必须实现 execute 方法以满足接口要求。注意,execute 方法不再接受 "task" 参数,因为每个控制器类。通过在派生类中覆盖 execute 方法,仍然可以实现多任务控制器。每个控制器类应该只做一种类型的 "事情",例如保存、删除、签入、签出等。然而,控制器、甚至模型和视图,都有权调用其他控制器,以便实现 HMVC 架构。

namespace Examples;

use Joomla\Application;
use Joomla\Input;

/**
 * My custom controller.
 *
 * @since  1.0
 */
class MyController extends Controller\Base
{
	/**
	 * Executes the controller.
	 *
	 * @return  void
	 *
	 * @since   1.0
	 * @throws  \RuntimeException
	 */
	public function execute()
	{
		echo time();
	}
}

// We'll assume we've already defined an application in this namespace.
$app = new ExampleApplication;
$input = new Input\Input;

// Instantiate the controller.
$controller = new MyController($input, $app);

// Print the time.
$controller->execute();

序列化

Controller\AbstractController 类实现了 Serializable。在序列化时,只有输入属性被序列化。在反序列化时,输入变量被反序列化,内部应用程序属性在运行时加载。

通过 Composer 安装

"joomla/controller": "~3.0" 添加到 composer.json 中的 require 块,然后运行 composer install

{
	"require": {
		"joomla/controller": "~3.0"
	}
}

或者,您可以直接从命令行运行以下命令

composer require joomla/controller "~3.0"

如果您想包含测试源,请使用

composer require --prefer-source joomla/controller "~3.0"