98 lines
2.1 KiB
PHP
98 lines
2.1 KiB
PHP
<?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;
|
|
}
|
|
}
|