My first commit of codes
This commit is contained in:
68
vendor/league/flysystem/src/Plugin/PluggableTrait.php
vendored
Normal file
68
vendor/league/flysystem/src/Plugin/PluggableTrait.php
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use League\Flysystem\FilesystemInterface;
|
||||
use League\Flysystem\PluginInterface;
|
||||
use LogicException;
|
||||
|
||||
trait PluggableTrait
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $plugins = [];
|
||||
|
||||
/**
|
||||
* Register a plugin.
|
||||
*
|
||||
* @param PluginInterface $plugin
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addPlugin(PluginInterface $plugin)
|
||||
{
|
||||
$this->plugins[$plugin->getMethod()] = $plugin;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a plugin.
|
||||
*
|
||||
* @param string $method
|
||||
*
|
||||
* @throws LogicException
|
||||
*
|
||||
* @return PluginInterface $plugin
|
||||
*/
|
||||
protected function findPlugin($method)
|
||||
{
|
||||
if (! isset($this->plugins[$method])) {
|
||||
throw new PluginNotFoundException('Plugin not found for method: '.$method);
|
||||
}
|
||||
|
||||
if (! method_exists($this->plugins[$method], 'handle')) {
|
||||
throw new LogicException(get_class($this->plugins[$method]).' does not have a handle method.');
|
||||
}
|
||||
|
||||
return $this->plugins[$method];
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke a plugin by method name.
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function invokePlugin($method, array $arguments, FilesystemInterface $filesystem)
|
||||
{
|
||||
$plugin = $this->findPlugin($method);
|
||||
$plugin->setFilesystem($filesystem);
|
||||
$callback = [$plugin, 'handle'];
|
||||
|
||||
return call_user_func_array($callback, $arguments);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user