mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-08-02 21:17:29 +02:00
cs
This commit is contained in:
@@ -16,5 +16,5 @@ interface MediaInterface
|
|||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function render();
|
public function render();
|
||||||
}
|
}
|
||||||
|
@@ -7,20 +7,31 @@ namespace DesignPatterns\Builder;
|
|||||||
*/
|
*/
|
||||||
class CarBuilder implements Builder
|
class CarBuilder implements Builder
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var Parts\Car
|
||||||
|
*/
|
||||||
protected $car;
|
protected $car;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function addDoors()
|
public function addDoors()
|
||||||
{
|
{
|
||||||
$this->car->setPart('rightdoor', new Parts\Door());
|
$this->car->setPart('rightdoor', new Parts\Door());
|
||||||
$this->car->setPart('leftDoor', new Parts\Door());
|
$this->car->setPart('leftDoor', new Parts\Door());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function addEngine()
|
public function addEngine()
|
||||||
{
|
{
|
||||||
$this->car->setPart('engine', new Parts\Engine());
|
$this->car->setPart('engine', new Parts\Engine());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function addWheel()
|
public function addWheel()
|
||||||
{
|
{
|
||||||
$this->car->setPart('wheelLF', new Parts\Wheel());
|
$this->car->setPart('wheelLF', new Parts\Wheel());
|
||||||
@@ -29,11 +40,17 @@ class CarBuilder implements Builder
|
|||||||
$this->car->setPart('wheelRR', new Parts\Wheel());
|
$this->car->setPart('wheelRR', new Parts\Wheel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function createVehicle()
|
public function createVehicle()
|
||||||
{
|
{
|
||||||
$this->car = new Parts\Car();
|
$this->car = new Parts\Car();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Parts\Car
|
||||||
|
*/
|
||||||
public function getVehicle()
|
public function getVehicle()
|
||||||
{
|
{
|
||||||
return $this->car;
|
return $this->car;
|
||||||
|
@@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
namespace DesignPatterns\Builder\Parts;
|
namespace DesignPatterns\Builder\Parts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Wheel
|
||||||
|
*/
|
||||||
class Wheel
|
class Wheel
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -13,7 +13,7 @@ namespace DesignPatterns\ChainOfResponsibilities;
|
|||||||
abstract class Handler
|
abstract class Handler
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var null
|
* @var Handler
|
||||||
*/
|
*/
|
||||||
private $successor = null;
|
private $successor = null;
|
||||||
|
|
||||||
@@ -22,14 +22,16 @@ abstract class Handler
|
|||||||
*
|
*
|
||||||
* A prepend method could be done with the same spirit
|
* A prepend method could be done with the same spirit
|
||||||
*
|
*
|
||||||
* You could also send the successor in the contructor but in PHP it is a
|
* You could also send the successor in the constructor but in PHP it is a
|
||||||
* bad idea because you have to remove the type-hint of the parameter because
|
* bad idea because you have to remove the type-hint of the parameter because
|
||||||
* the last handler has a null successor.
|
* the last handler has a null successor.
|
||||||
*
|
*
|
||||||
* And if you override the contructor, that Handler can no longer have a
|
* And if you override the constructor, that Handler can no longer have a
|
||||||
* successor. One solution is to provide a NullObject (see pattern).
|
* successor. One solution is to provide a NullObject (see pattern).
|
||||||
* It is more preferable to keep the constructor "free" to inject services
|
* It is more preferable to keep the constructor "free" to inject services
|
||||||
* you need with the DiC of symfony2 for example.
|
* you need with the DiC of symfony2 for example.
|
||||||
|
*
|
||||||
|
* @param Handler $handler
|
||||||
*/
|
*/
|
||||||
final public function append(Handler $handler)
|
final public function append(Handler $handler)
|
||||||
{
|
{
|
||||||
@@ -46,6 +48,10 @@ abstract class Handler
|
|||||||
* This approach by using a template method pattern ensures you that
|
* This approach by using a template method pattern ensures you that
|
||||||
* each subclass will not forget to call the successor. Beside, the returned
|
* each subclass will not forget to call the successor. Beside, the returned
|
||||||
* boolean value indicates you if the request have been processed or not.
|
* boolean value indicates you if the request have been processed or not.
|
||||||
|
*
|
||||||
|
* @param Request $req
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
final public function handle(Request $req)
|
final public function handle(Request $req)
|
||||||
{
|
{
|
||||||
@@ -63,7 +69,9 @@ abstract class Handler
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Each concrete handler has to implement the processing of the request
|
* Each concrete handler has to implement the processing of the request
|
||||||
*
|
*
|
||||||
|
* @param Request $req
|
||||||
|
*
|
||||||
* @return bool true if the request has been processed
|
* @return bool true if the request has been processed
|
||||||
*/
|
*/
|
||||||
abstract protected function processing(Request $req);
|
abstract protected function processing(Request $req);
|
||||||
|
@@ -5,22 +5,30 @@ namespace DesignPatterns\ChainOfResponsibilities\Responsible;
|
|||||||
use DesignPatterns\ChainOfResponsibilities\Handler;
|
use DesignPatterns\ChainOfResponsibilities\Handler;
|
||||||
use DesignPatterns\ChainOfResponsibilities\Request;
|
use DesignPatterns\ChainOfResponsibilities\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class FastStorage
|
||||||
|
*/
|
||||||
class FastStorage extends Handler
|
class FastStorage extends Handler
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $data = array();
|
||||||
|
|
||||||
protected $_data = array();
|
/**
|
||||||
|
* @param array $data
|
||||||
|
*/
|
||||||
public function __construct($data = array())
|
public function __construct($data = array())
|
||||||
{
|
{
|
||||||
$this->_data = $data;
|
$this->data = $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function processing(Request $req)
|
protected function processing(Request $req)
|
||||||
{
|
{
|
||||||
if ('get' === $req->verb) {
|
if ('get' === $req->verb) {
|
||||||
if (array_key_exists($req->key, $this->_data)) {
|
if (array_key_exists($req->key, $this->data)) {
|
||||||
// the handler IS responsible and then processes the request
|
// the handler IS responsible and then processes the request
|
||||||
$req->response = $this->_data[$req->key];
|
$req->response = $this->data[$req->key];
|
||||||
// instead of returning true, I could return the value but it proves
|
// instead of returning true, I could return the value but it proves
|
||||||
// to be a bad idea. What if the value IS "false" ?
|
// to be a bad idea. What if the value IS "false" ?
|
||||||
return true;
|
return true;
|
||||||
|
@@ -20,21 +20,21 @@ class SlowStorage extends Handler
|
|||||||
/**
|
/**
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $_data = array();
|
protected $data = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $data
|
* @param array $data
|
||||||
*/
|
*/
|
||||||
public function __construct($data = array())
|
public function __construct($data = array())
|
||||||
{
|
{
|
||||||
$this->_data = $data;
|
$this->data = $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function processing(Request $req)
|
protected function processing(Request $req)
|
||||||
{
|
{
|
||||||
if ('get' === $req->verb) {
|
if ('get' === $req->verb) {
|
||||||
if (array_key_exists($req->key, $this->_data)) {
|
if (array_key_exists($req->key, $this->data)) {
|
||||||
$req->response = $this->_data[$req->key];
|
$req->response = $this->data[$req->key];
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user