From 994768d99f0c0ea0e50f30774005a75e7533e105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 3 Nov 2014 13:10:03 +0100 Subject: [PATCH] Update Pimple to V3.0 --- 3rdparty | 2 +- lib/base.php | 3 +-- .../dependencyinjection/dicontainer.php | 20 +++++++++---------- .../appframework/utility/simplecontainer.php | 9 ++++++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/3rdparty b/3rdparty index c37dc06ce2..17cdabdae0 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit c37dc06ce2906813dec3296d1a58c1628c206a31 +Subproject commit 17cdabdae0168bd678f859345b0b20a9ae7c9646 diff --git a/lib/base.php b/lib/base.php index d428d45d90..7fa53c3a07 100644 --- a/lib/base.php +++ b/lib/base.php @@ -457,8 +457,7 @@ class OC { // setup 3rdparty autoloader $vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php'; if (file_exists($vendorAutoLoad)) { - $loader = require_once $vendorAutoLoad; - $loader->add('Pimple',OC::$THIRDPARTYROOT . '/3rdparty/Pimple'); + require_once $vendorAutoLoad; } else { OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); OC_Template::printErrorPage('Composer autoloader not found, unable to continue.'); diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php index f7fee34721..98525ed320 100644 --- a/lib/private/appframework/dependencyinjection/dicontainer.php +++ b/lib/private/appframework/dependencyinjection/dicontainer.php @@ -59,14 +59,14 @@ class DIContainer extends SimpleContainer implements IAppContainer{ $this->registerParameter('ServerContainer', \OC::$server); - $this['API'] = $this->share(function($c){ + $this->registerService('API', function($c){ return new API($c['AppName']); }); /** * Http */ - $this['Request'] = $this->share(function($c) { + $this->registerService('Request', function($c) { /** @var $c SimpleContainer */ /** @var $server SimpleContainer */ $server = $c->query('ServerContainer'); @@ -75,7 +75,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{ return $server->getRequest(); }); - $this['Protocol'] = $this->share(function($c){ + $this->registerService('Protocol', function($c){ if(isset($_SERVER['SERVER_PROTOCOL'])) { return new Http($_SERVER, $_SERVER['SERVER_PROTOCOL']); } else { @@ -83,7 +83,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{ } }); - $this['Dispatcher'] = $this->share(function($c) { + $this->registerService('Dispatcher', function($c) { return new Dispatcher( $c['Protocol'], $c['MiddlewareDispatcher'], @@ -97,7 +97,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{ * Middleware */ $app = $this; - $this['SecurityMiddleware'] = $this->share(function($c) use ($app){ + $this->registerService('SecurityMiddleware', function($c) use ($app){ return new SecurityMiddleware( $c['Request'], $c['ControllerMethodReflector'], @@ -110,14 +110,14 @@ class DIContainer extends SimpleContainer implements IAppContainer{ ); }); - $this['CORSMiddleware'] = $this->share(function($c) { + $this->registerService('CORSMiddleware', function($c) { return new CORSMiddleware( $c['Request'], $c['ControllerMethodReflector'] ); }); - $this['SessionMiddleware'] = $this->share(function($c) use ($app) { + $this->registerService('SessionMiddleware', function($c) use ($app) { return new SessionMiddleware( $c['Request'], $c['ControllerMethodReflector'], @@ -126,7 +126,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{ }); $middleWares = &$this->middleWares; - $this['MiddlewareDispatcher'] = $this->share(function($c) use (&$middleWares) { + $this->registerService('MiddlewareDispatcher', function($c) use (&$middleWares) { $dispatcher = new MiddlewareDispatcher(); $dispatcher->registerMiddleware($c['SecurityMiddleware']); $dispatcher->registerMiddleware($c['CORSMiddleware']); @@ -143,11 +143,11 @@ class DIContainer extends SimpleContainer implements IAppContainer{ /** * Utilities */ - $this['TimeFactory'] = $this->share(function($c){ + $this->registerService('TimeFactory', function($c){ return new TimeFactory(); }); - $this['ControllerMethodReflector'] = $this->share(function($c) { + $this->registerService('ControllerMethodReflector', function($c) { return new ControllerMethodReflector(); }); diff --git a/lib/private/appframework/utility/simplecontainer.php b/lib/private/appframework/utility/simplecontainer.php index a2d90138df..c6effed5b4 100644 --- a/lib/private/appframework/utility/simplecontainer.php +++ b/lib/private/appframework/utility/simplecontainer.php @@ -7,7 +7,7 @@ namespace OC\AppFramework\Utility; * * SimpleContainer is a simple implementation of IContainer on basis of \Pimple */ -class SimpleContainer extends \Pimple implements \OCP\IContainer { +class SimpleContainer extends \Pimple\Container implements \OCP\IContainer { /** * @param string $name name of the service to query for @@ -35,10 +35,13 @@ class SimpleContainer extends \Pimple implements \OCP\IContainer { * @param bool $shared */ function registerService($name, \Closure $closure, $shared = true) { + if (!empty($this[$name])) { + unset($this[$name]); + } if ($shared) { - $this[$name] = \Pimple::share($closure); - } else { $this[$name] = $closure; + } else { + $this[$name] = parent::factory($closure); } } }