*/ private $factories = array(); /** * Resolved instances. * * @var array */ private $instances = array(); /** * Register factory. * * @param string $id Service ID. * @param callable $factory Factory callback. * @return void */ public function set( $id, $factory ) { $this->factories[ (string) $id ] = $factory; } /** * Resolve service. * * @param string $id Service ID. * @return mixed|null */ public function get( $id ) { $key = (string) $id; if ( array_key_exists( $key, $this->instances ) ) { return $this->instances[ $key ]; } if ( ! isset( $this->factories[ $key ] ) ) { return null; } $this->instances[ $key ] = call_user_func( $this->factories[ $key ], $this ); return $this->instances[ $key ]; } }