windwalker / controller
Windwalker 控制器包
2.1.9
2016-02-12 15:36 UTC
Requires
- php: >=5.3.10
Requires (Dev)
- windwalker/application: ~2.0
- windwalker/io: ~2.0
README
Windwalker 控制器包是一个简单的接口,用于控制一些业务逻辑,它不依赖于任何其他包。您可以将其集成到任何系统中。
通过 Composer 安装
将以下内容添加到您的 composer.json
文件中的 require 块。
{ "require": { "windwalker/controller": "~2.0" } }
创建您的控制器
use Windwalker\Controller\Controller; class IndexController extends AbstractController { public function execute() { return 'Index'; } } $controller = new IndexController; $output = $contorller->execute();
Windwalker 控制器是一个“单动作控制器”,遵循单一职责原则,每个控制器只维护一个任务(动作)。它受到 Joomla 新 MVC 的启发。您可以为 CRUD 创建 IndexController
、CreateController
、UpdateController
和 DeleteController
。
使用输入和应用
默认情况下,控制器维护一个输入和一个应用对象。我们可以在构造时设置它。
use Windwalker\Controller\Controller; class IndexController extends AbstractController { public function execute() { // Get params from http request $method = $this->input->get('_method'); $this->app->redirect('...'); return true; } } $input = new Input; $app = new WebApplication; $controller = new IndexController($input, $app); $output = $contorller->execute();
它不依赖于 Windwalker 自身,您可以将其他框架的输入和应用推入其中。
$input = new Request; $app = new HttpKernel; $controller = new IndexController($input, $app); $output = $contorller->execute();
HMVC
在 Windwalker 控制器中使用 HMVC 非常简单。
class IndexController extends AbstractController { public function execute() { $this->input->set('id', 123); $foo = new FooController($this->input, $this->app); echo $foo->execute(); return true; } }
多动作控制器
如果您熟悉常见的多动作模式,请使用 AbstractMultiActionController
。
use Windwalker\Controller\AbstractMultiActionController; class ArticleController extends AbstractMultiActionController { public function indexAction() {} public function saveAction($id = null, $data = array()) {} public function deleteAction($id = null) {} } $controller = new ArticleController; // Will call saveAction() $controller->setActionName('save') ->setArguments(array(5, $data)) ->execute();
如果没有设置动作,将调用 doExecute()
,但您仍然需要首先覆盖 doExecute()
。