joomla / controller
Joomla 控制器包
Requires
- php: ^8.1.0
Requires (Dev)
- joomla/application: ^3.0
- joomla/input: ^3.0
- phan/phan: ^5.4.2
- phpstan/phpstan: ^1.10.7
- phpunit/phpunit: ^9.5.28
- squizlabs/php_codesniffer: ~3.7.2
Suggests
- joomla/application: The joomla/application package is required to use Joomla\Controller\AbstractController
- joomla/input: The joomla/input package is required to use Joomla\Controller\AbstractController
This package is auto-updated.
Last update: 2024-09-17 10:04:50 UTC
README
接口
Controller\ControllerInterface
Controller\ControllerInterface
是一个接口,要求类实现以下方法
execute
getApplication
getInput
setApplication
setInput
类
Controller\AbstractController
构造
Controller\AbstractController
的构造函数接收一个可选的 Joomla\Input\Input
对象和一个可选的 Joomla\Application\AbstractApplication
对象。一个或另一个可以省略,但如果没有设置而使用 getApplication
或 getInput
将会抛出异常。
使用
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"