amonger / command
PHP 5.3 的命令模式
2.1.2
2015-07-15 20:02 UTC
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^4.7
This package is auto-updated.
Last update: 2024-09-12 23:02:54 UTC
README
这是一个用于PHP 5.3的简单命令总线
用法
<?php namespace Command\Command; class MyHandlerCommand { public $someParam; public function __construct($someParam) { $this->someParam = $someParam; } }
<?php namespace Command\Handler; class MyHandlerHandler implements HandlerInterface, ApplicationInterface { protected $app; public function handle($object) { echo $app['db']->persist($object->someParam); } public function setApplication($app) { $this->app = $app; } }
$command = new Command\Command(new Command\Resolver); $command->setApplication($app); $command->dispatch(new MyHandlerCommand($someParam));
这将解析实现了HandlerInterface接口的MyHandlerHandler,并提供对您的应用程序容器的访问。
自我处理
或者,您可能不想将您的DTO与命令分开。在这种情况下,您可以仅实现自我处理接口,这将调用handle方法。
<?php namespace Command\Command; class MyHandlerCommand implements SelfHandling { protected $someParam; public function __construct($someParam) { $this->someParam = $someParam; } public function handle() { return $this->someParam * 2; } }
最后,您可以通过实现ApplicationInterface来获取对应用程序的访问
<?php class TestCommand implements SelfHandling, ApplicationInterface { private $name; private $application; public function __construct($name) { $this->name = $name; } public function handle() { $app = $this->application; var_dump($app($this->name)); } /** * @param $application * @return void */ public function setApplication($application) { $this->application = $application; } }
$resolver = new \Command\Resolver\SelfHandlingResolver(); $resolver->setApplication(function($a){ return $a*2;}); $command = new Command\Command($resolver); $command->dispatch(new TestCommand(2));