You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.1 KiB
97 lines
2.1 KiB
<?php |
|
|
|
namespace Illuminate\Pipeline; |
|
|
|
use Closure; |
|
use Illuminate\Contracts\Container\Container; |
|
use Illuminate\Contracts\Pipeline\Hub as HubContract; |
|
|
|
class Hub implements HubContract |
|
{ |
|
/** |
|
* The container implementation. |
|
* |
|
* @var \Illuminate\Contracts\Container\Container|null |
|
*/ |
|
protected $container; |
|
|
|
/** |
|
* All of the available pipelines. |
|
* |
|
* @var array |
|
*/ |
|
protected $pipelines = []; |
|
|
|
/** |
|
* Create a new Hub instance. |
|
* |
|
* @param \Illuminate\Contracts\Container\Container|null $container |
|
* @return void |
|
*/ |
|
public function __construct(Container $container = null) |
|
{ |
|
$this->container = $container; |
|
} |
|
|
|
/** |
|
* Define the default named pipeline. |
|
* |
|
* @param \Closure $callback |
|
* @return void |
|
*/ |
|
public function defaults(Closure $callback) |
|
{ |
|
return $this->pipeline('default', $callback); |
|
} |
|
|
|
/** |
|
* Define a new named pipeline. |
|
* |
|
* @param string $name |
|
* @param \Closure $callback |
|
* @return void |
|
*/ |
|
public function pipeline($name, Closure $callback) |
|
{ |
|
$this->pipelines[$name] = $callback; |
|
} |
|
|
|
/** |
|
* Send an object through one of the available pipelines. |
|
* |
|
* @param mixed $object |
|
* @param string|null $pipeline |
|
* @return mixed |
|
*/ |
|
public function pipe($object, $pipeline = null) |
|
{ |
|
$pipeline = $pipeline ?: 'default'; |
|
|
|
return call_user_func( |
|
$this->pipelines[$pipeline], new Pipeline($this->container), $object |
|
); |
|
} |
|
|
|
/** |
|
* Get the container instance used by the hub. |
|
* |
|
* @return \Illuminate\Contracts\Container\Container |
|
*/ |
|
public function getContainer() |
|
{ |
|
return $this->container; |
|
} |
|
|
|
/** |
|
* Set the container instance used by the hub. |
|
* |
|
* @param \Illuminate\Contracts\Container\Container $container |
|
* @return $this |
|
*/ |
|
public function setContainer(Container $container) |
|
{ |
|
$this->container = $container; |
|
|
|
return $this; |
|
} |
|
}
|
|
|