PSR-11 實作
在 Laravel 5.5 開始,才實作 PSR-11。在之前的版本,則需要透過橋接器來達成。以下是一個簡單的範例:
<?php
namespace LaravelBridge\Support;
use BadMethodCallException; use Exception; use Illuminate\Contracts\Container\Container; use Psr\Container\ContainerInterface;
class ContainerBridge implements ContainerInterface {
protected $container;
public function __construct(Container $container) { $this->container = $container; }
public function __call($method, $arguments) { if (method_exists($this->container, $method)) { return call_user_func_array([$this->container, $method], $arguments); }
throw new BadMethodCallException("Undefined method '$method'"); }
public function get($id) { try { return $this->container->make($id); } catch (Exception $e) { if ($this->has($id)) { throw $e; }
throw new EntryNotFoundException("Entry '$id' is not found"); } }
public function has($id) { return $this->container->bound($id); } }
|
完整實作可以參考 Laravel Bridge Support Library。