From 10b58b36b8fbc41a1745e051b4bbdce67befa02e Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Tue, 21 Oct 2014 19:07:56 +1300 Subject: Added PHP-DI + StaticContainer class --- composer.json | 3 +- composer.lock | 605 ++++++++++++++++++++++++++++++++++++++++++++--- config/global.php | 4 + core/StaticContainer.php | 62 +++++ 4 files changed, 640 insertions(+), 34 deletions(-) create mode 100644 config/global.php create mode 100644 core/StaticContainer.php diff --git a/composer.json b/composer.json index 24e10fcedc..db9e9c1537 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,8 @@ "tedivm/jshrink": "~0.5.1", "mustangostang/spyc": "~0.5.0", "piwik/device-detector": "~2.0", - "piwik/decompress": "~0.1.1" + "piwik/decompress": "~0.1.1", + "mnapoli/php-di": "~4.4.0" }, "require-dev": { "aws/aws-sdk-php": "2.7.1", diff --git a/composer.lock b/composer.lock index 0180bb1481..7dff61dc40 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,224 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "e8269e35cd792d2a4718e936459423bd", + "hash": "0d42501de65a49e2e8fb665807027443", "packages": [ + { + "name": "container-interop/container-interop", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "b4274c871bfd1ae8d8e527ba11734f4df1573e48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/b4274c871bfd1ae8d8e527ba11734f4df1573e48", + "reference": "b4274c871bfd1ae8d8e527ba11734f4df1573e48", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "time": "2014-03-16 14:50:05" + }, + { + "name": "doctrine/annotations", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/6a6bec0670bb6e71a263b08bc1b98ea242928633", + "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2014-09-25 16:45:30" + }, + { + "name": "doctrine/cache", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "cf483685798a72c93bf4206e3dd6358ea07d64e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/cf483685798a72c93bf4206e3dd6358ea07d64e7", + "reference": "cf483685798a72c93bf4206e3dd6358ea07d64e7", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": ">=3.7", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Cache\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2014-09-17 14:24:04" + }, + { + "name": "doctrine/lexer", + "version": "v1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "2f708a85bb3aab5d99dab8be435abd73e0b18acb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/2f708a85bb3aab5d99dab8be435abd73e0b18acb", + "reference": "2f708a85bb3aab5d99dab8be435abd73e0b18acb", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com", + "homepage": "http://www.instaclick.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2013-01-12 18:59:04" + }, { "name": "leafo/lessphp", "version": "v0.4.0", @@ -47,6 +263,91 @@ "homepage": "http://leafo.net/lessphp/", "time": "2013-08-09 17:09:19" }, + { + "name": "mnapoli/php-di", + "version": "4.4.0", + "source": { + "type": "git", + "url": "https://github.com/mnapoli/PHP-DI.git", + "reference": "556e3be63a821bbad0585a34f634080305392252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnapoli/PHP-DI/zipball/556e3be63a821bbad0585a34f634080305392252", + "reference": "556e3be63a821bbad0585a34f634080305392252", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "~1.0", + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "mnapoli/phpdocreader": "~1.3", + "myclabs/php-enum": "1.*", + "ocramius/proxy-manager": "~0.3", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "DI\\": "src/", + "IntegrationTests\\": "tests/", + "UnitTests\\": "tests/" + }, + "files": [ + "src/DI/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP-DI is a Container that makes Dependency Injection as practical as possible in PHP", + "homepage": "http://mnapoli.github.com/PHP-DI/", + "keywords": [ + "container", + "dependency injection", + "di" + ], + "time": "2014-10-14 06:13:26" + }, + { + "name": "mnapoli/phpdocreader", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/mnapoli/PhpDocReader.git", + "reference": "8a6e123fd1ce54f7fcbd71747b3bf04e465da229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnapoli/PhpDocReader/zipball/8a6e123fd1ce54f7fcbd71747b3bf04e465da229", + "reference": "8a6e123fd1ce54f7fcbd71747b3bf04e465da229", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "PhpDocReader": "src/", + "UnitTest": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "keywords": [ + "phpdoc", + "reflection" + ], + "time": "2014-08-21 08:20:45" + }, { "name": "mustangostang/spyc", "version": "0.5.1", @@ -94,6 +395,100 @@ ], "time": "2013-02-21 10:52:01" }, + { + "name": "myclabs/php-enum", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "b52c2f215f5b251693369309ea7f537f9d92ec5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b52c2f215f5b251693369309ea7f537f9d92ec5e", + "reference": "b52c2f215f5b251693369309ea7f537f9d92ec5e", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "MyCLabs": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "time": "2013-11-11 18:29:08" + }, + { + "name": "ocramius/proxy-manager", + "version": "0.5.2", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/ProxyManager.git", + "reference": "0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5", + "reference": "0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "zendframework/zend-code": ">2.2.5,<3.0" + }, + "require-dev": { + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "1.5.*" + }, + "suggest": { + "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", + "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", + "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", + "zendframework/zend-stdlib": "To use the hydrator proxy", + "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "ProxyManager\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", + "homepage": "https://github.com/Ocramius/ProxyManager", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "time": "2014-09-28 14:18:11" + }, { "name": "piwik/decompress", "version": "0.1.1", @@ -178,17 +573,17 @@ }, { "name": "symfony/console", - "version": "v2.5.5", + "version": "v2.5.6", "target-dir": "Symfony/Component/Console", "source": { "type": "git", "url": "https://github.com/symfony/Console.git", - "reference": "ca053eaa031c93afb68a71e4eb1f4168dfd4a661" + "reference": "6f177fca24200a5b97aef5ce7a5c98124a0f0db0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/ca053eaa031c93afb68a71e4eb1f4168dfd4a661", - "reference": "ca053eaa031c93afb68a71e4eb1f4168dfd4a661", + "url": "https://api.github.com/repos/symfony/Console/zipball/6f177fca24200a5b97aef5ce7a5c98124a0f0db0", + "reference": "6f177fca24200a5b97aef5ce7a5c98124a0f0db0", "shasum": "" }, "require": { @@ -229,7 +624,7 @@ ], "description": "Symfony Console Component", "homepage": "http://symfony.com", - "time": "2014-09-25 09:53:56" + "time": "2014-10-05 13:57:04" }, { "name": "tedivm/jshrink", @@ -274,16 +669,16 @@ }, { "name": "twig/twig", - "version": "v1.16.1", + "version": "v1.16.2", "source": { "type": "git", "url": "https://github.com/fabpot/Twig.git", - "reference": "7c4c01dcf578523cfcddf383641a4f12790270ec" + "reference": "42f758d9fe2146d1f0470604fc05ee43580873fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig/zipball/7c4c01dcf578523cfcddf383641a4f12790270ec", - "reference": "7c4c01dcf578523cfcddf383641a4f12790270ec", + "url": "https://api.github.com/repos/fabpot/Twig/zipball/42f758d9fe2146d1f0470604fc05ee43580873fc", + "reference": "42f758d9fe2146d1f0470604fc05ee43580873fc", "shasum": "" }, "require": { @@ -327,7 +722,151 @@ "keywords": [ "templating" ], - "time": "2014-10-10 14:09:53" + "time": "2014-10-17 12:53:44" + }, + { + "name": "zendframework/zend-code", + "version": "2.3.3", + "target-dir": "Zend/Code", + "source": { + "type": "git", + "url": "https://github.com/zendframework/Component_ZendCode.git", + "reference": "78ea301533dd05f1c1759e8928d119804900446b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/Component_ZendCode/zipball/78ea301533dd05f1c1759e8928d119804900446b", + "reference": "78ea301533dd05f1c1759e8928d119804900446b", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-eventmanager": "self.version" + }, + "require-dev": { + "doctrine/common": ">=2.1", + "zendframework/zend-stdlib": "self.version" + }, + "suggest": { + "doctrine/common": "Doctrine\\Common >=2.1 for annotation features", + "zendframework/zend-stdlib": "Zend\\Stdlib component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev", + "dev-develop": "2.4-dev" + } + }, + "autoload": { + "psr-0": { + "Zend\\Code\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides facilities to generate arbitrary code using an object oriented interface", + "homepage": "https://github.com/zendframework/zf2", + "keywords": [ + "code", + "zf2" + ], + "time": "2014-09-16 22:58:11" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "2.3.3", + "target-dir": "Zend/EventManager", + "source": { + "type": "git", + "url": "https://github.com/zendframework/Component_ZendEventManager.git", + "reference": "4110fe64b10616b9bb71429a206d8e9e6d99e3ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/Component_ZendEventManager/zipball/4110fe64b10616b9bb71429a206d8e9e6d99e3ba", + "reference": "4110fe64b10616b9bb71429a206d8e9e6d99e3ba", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "self.version" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev", + "dev-develop": "2.4-dev" + } + }, + "autoload": { + "psr-0": { + "Zend\\EventManager\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zf2", + "keywords": [ + "eventmanager", + "zf2" + ], + "time": "2014-09-16 22:58:11" + }, + { + "name": "zendframework/zend-stdlib", + "version": "2.3.3", + "target-dir": "Zend/Stdlib", + "source": { + "type": "git", + "url": "https://github.com/zendframework/Component_ZendStdlib.git", + "reference": "fa33e6647f830d0d2a1cb451efcdfe1bb9a66c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/fa33e6647f830d0d2a1cb451efcdfe1bb9a66c33", + "reference": "fa33e6647f830d0d2a1cb451efcdfe1bb9a66c33", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "zendframework/zend-eventmanager": "self.version", + "zendframework/zend-serializer": "self.version", + "zendframework/zend-servicemanager": "self.version" + }, + "suggest": { + "zendframework/zend-eventmanager": "To support aggregate hydrator usage", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev", + "dev-develop": "2.4-dev" + } + }, + "autoload": { + "psr-0": { + "Zend\\Stdlib\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zf2", + "keywords": [ + "stdlib", + "zf2" + ], + "time": "2014-09-16 22:58:11" } ], "packages-dev": [ @@ -920,16 +1459,16 @@ }, { "name": "phpunit/phpunit", - "version": "4.3.3", + "version": "4.3.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5a0bc4dcbb7340c0a9a9bc3507854a67c564edc4" + "reference": "23e4e0310f037aae873cc81b8658dbbb82878f71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5a0bc4dcbb7340c0a9a9bc3507854a67c564edc4", - "reference": "5a0bc4dcbb7340c0a9a9bc3507854a67c564edc4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/23e4e0310f037aae873cc81b8658dbbb82878f71", + "reference": "23e4e0310f037aae873cc81b8658dbbb82878f71", "shasum": "" }, "require": { @@ -940,7 +1479,7 @@ "ext-spl": "*", "php": ">=5.3.3", "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.1", + "phpunit/php-file-iterator": "~1.3.2", "phpunit/php-text-template": "~1.2", "phpunit/php-timer": "~1.0.2", "phpunit/phpunit-mock-objects": "~2.3", @@ -990,7 +1529,7 @@ "testing", "xunit" ], - "time": "2014-10-16 16:53:00" + "time": "2014-10-22 11:43:12" }, { "name": "phpunit/phpunit-mock-objects", @@ -1165,16 +1704,16 @@ }, { "name": "sebastian/environment", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7" + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7", - "reference": "6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0d9bf79554d2a999da194a60416c15cf461eb67d", + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d", "shasum": "" }, "require": { @@ -1186,7 +1725,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1211,7 +1750,7 @@ "environment", "hhvm" ], - "time": "2014-10-07 09:23:16" + "time": "2014-10-22 06:38:05" }, { "name": "sebastian/exporter", @@ -1315,17 +1854,17 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.5.5", + "version": "v2.5.6", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46" + "reference": "804eb28dbbfba9ffdab21fe2066744906cea2212" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/f6281337bf5f985f585d1db6a83adb05ce531f46", - "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/804eb28dbbfba9ffdab21fe2066744906cea2212", + "reference": "804eb28dbbfba9ffdab21fe2066744906cea2212", "shasum": "" }, "require": { @@ -1368,21 +1907,21 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "http://symfony.com", - "time": "2014-09-28 15:56:11" + "time": "2014-10-01 15:43:05" }, { "name": "symfony/yaml", - "version": "v2.5.5", + "version": "v2.5.6", "target-dir": "Symfony/Component/Yaml", "source": { "type": "git", "url": "https://github.com/symfony/Yaml.git", - "reference": "b1dbc53593b98c2d694ebf383660ac9134d30b96" + "reference": "2d9f527449cabfa8543dd7fa3a466d6ae83d6726" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/b1dbc53593b98c2d694ebf383660ac9134d30b96", - "reference": "b1dbc53593b98c2d694ebf383660ac9134d30b96", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/2d9f527449cabfa8543dd7fa3a466d6ae83d6726", + "reference": "2d9f527449cabfa8543dd7fa3a466d6ae83d6726", "shasum": "" }, "require": { @@ -1415,7 +1954,7 @@ ], "description": "Symfony Yaml Component", "homepage": "http://symfony.com", - "time": "2014-09-22 09:14:18" + "time": "2014-10-01 05:50:18" } ], "aliases": [], diff --git a/config/global.php b/config/global.php new file mode 100644 index 0000000000..9a25907242 --- /dev/null +++ b/config/global.php @@ -0,0 +1,4 @@ +setDefinitionCache($cache); + // $builder->writeProxiesToFile(true, PIWIK_USER_PATH . '/tmp/proxies'); + + // Global config + $builder->addDefinitions(PIWIK_USER_PATH . '/config/global.php'); + + // User config + if (file_exists(PIWIK_USER_PATH . '/config/config.php')) { + $builder->addDefinitions(PIWIK_USER_PATH . '/config/config.php'); + } + + return $builder->build(); + } +} -- cgit v1.2.3 From c8c787a3574ac6bed2e66fe2588fdafacf990cd2 Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Tue, 21 Oct 2014 19:08:19 +1300 Subject: The FrontController now uses the container to create controllers (i.e. DI in controllers) --- core/FrontController.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/FrontController.php b/core/FrontController.php index 6f101c10ac..572ecd5744 100644 --- a/core/FrontController.php +++ b/core/FrontController.php @@ -19,7 +19,6 @@ use Piwik\Plugin\Report; use Piwik\Plugin\Widgets; use Piwik\Plugins\CoreAdminHome\CustomLogo; use Piwik\Session; -use Piwik\Plugins\CoreHome\Controller as CoreHomeController; /** * This singleton dispatches requests to the appropriate plugin Controller. @@ -113,6 +112,8 @@ class FrontController extends Singleton protected function makeController($module, $action, &$parameters) { + $container = StaticContainer::getContainer(); + $controllerClassName = $this->getClassNameController($module); // TRY TO FIND ACTION IN CONTROLLER @@ -120,7 +121,7 @@ class FrontController extends Singleton $class = $this->getClassNameController($module); /** @var $controller Controller */ - $controller = new $class; + $controller = $container->get($class); $controllerAction = $action; if ($controllerAction === false) { @@ -146,7 +147,7 @@ class FrontController extends Singleton $parameters['widgetModule'] = $module; $parameters['widgetMethod'] = $action; - return array(new CoreHomeController(), 'renderWidget'); + return array($container->get('Piwik\Plugins\CoreHome\Controller'), 'renderWidget'); } // TRY TO FIND ACTION IN REPORT @@ -157,7 +158,7 @@ class FrontController extends Singleton $parameters['reportModule'] = $module; $parameters['reportAction'] = $action; - return array(new CoreHomeController(), 'renderReportWidget'); + return array($container->get('Piwik\Plugins\CoreHome\Controller'), 'renderReportWidget'); } if (!empty($action) && Report::PREFIX_ACTION_IN_MENU === substr($action, 0, strlen(Report @@ -169,7 +170,7 @@ class FrontController extends Singleton $parameters['reportModule'] = $module; $parameters['reportAction'] = $reportAction; - return array(new CoreHomeController(), 'renderReportMenu'); + return array($container->get('Piwik\Plugins\CoreHome\Controller'), 'renderReportMenu'); } } -- cgit v1.2.3 From 3668fde1861f0a192e794316e7ce848c6512bf76 Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Tue, 21 Oct 2014 19:08:42 +1300 Subject: Injection of dependencies through annotations in controllers --- plugins/Installation/Controller.php | 9 +++++++-- plugins/SitesManager/Controller.php | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php index 0dffcd343c..53039c3216 100644 --- a/plugins/Installation/Controller.php +++ b/plugins/Installation/Controller.php @@ -52,6 +52,12 @@ class Controller extends \Piwik\Plugin\ControllerAdmin 'finished' => 'Installation_Congratulations', ); + /** + * @Inject + * @var TrackerCodeGenerator + */ + private $trackerGenerator; + /** * Get installation steps * @@ -376,8 +382,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin // Load the Tracking code and help text from the SitesManager $viewTrackingHelp = new \Piwik\View('@SitesManager/_displayJavascriptCode'); $viewTrackingHelp->displaySiteName = $siteName; - $javascriptGenerator = new TrackerCodeGenerator(); - $viewTrackingHelp->jsTag = $javascriptGenerator->generate($idSite, Url::getCurrentUrlWithoutFileName()); + $viewTrackingHelp->jsTag = $this->trackerGenerator->generate($idSite, Url::getCurrentUrlWithoutFileName()); $viewTrackingHelp->idSite = $idSite; $viewTrackingHelp->piwikUrl = Url::getCurrentUrlWithoutFileName(); diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php index e7299ab03e..cca2f1ff19 100644 --- a/plugins/SitesManager/Controller.php +++ b/plugins/SitesManager/Controller.php @@ -22,6 +22,12 @@ use Piwik\View; */ class Controller extends \Piwik\Plugin\ControllerAdmin { + /** + * @Inject + * @var TrackerCodeGenerator + */ + private $trackerGenerator; + /** * Main view showing listing of websites and settings */ @@ -96,8 +102,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin { $idSite = Common::getRequestVar('idSite'); Piwik::checkUserHasViewAccess($idSite); - $javascriptGenerator = new TrackerCodeGenerator(); - $jsTag = $javascriptGenerator->generate($idSite, SettingsPiwik::getPiwikUrl()); + $jsTag = $this->trackerGenerator->generate($idSite, SettingsPiwik::getPiwikUrl()); $site = new Site($idSite); return $this->renderTemplate('displayJavascriptCode', array( -- cgit v1.2.3 From 49f56b612b95b4648a37d2546f05cad51dfea9c1 Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Thu, 30 Oct 2014 11:24:44 +1300 Subject: Use ArrayCache for now --- core/StaticContainer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/StaticContainer.php b/core/StaticContainer.php index 6667f9d302..c78da90e51 100644 --- a/core/StaticContainer.php +++ b/core/StaticContainer.php @@ -10,6 +10,7 @@ namespace Piwik; use DI\Container; use DI\ContainerBuilder; +use Doctrine\Common\Cache\ArrayCache; use Interop\Container\ContainerInterface; /** @@ -46,7 +47,7 @@ class StaticContainer $builder = new ContainerBuilder(); // TODO add cache - // $builder->setDefinitionCache($cache); + $builder->setDefinitionCache(new ArrayCache()); // $builder->writeProxiesToFile(true, PIWIK_USER_PATH . '/tmp/proxies'); // Global config -- cgit v1.2.3 From 46b84557d30dcab91e5e4dfe07befafdea2cb33b Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Thu, 30 Oct 2014 11:35:05 +1300 Subject: Replaced calls to $container->get() to $container->make() for controllers, makes sense since controllers are not services --- core/FrontController.php | 8 ++++---- core/StaticContainer.php | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/FrontController.php b/core/FrontController.php index 572ecd5744..a45a21da7c 100644 --- a/core/FrontController.php +++ b/core/FrontController.php @@ -121,7 +121,7 @@ class FrontController extends Singleton $class = $this->getClassNameController($module); /** @var $controller Controller */ - $controller = $container->get($class); + $controller = $container->make($class); $controllerAction = $action; if ($controllerAction === false) { @@ -147,7 +147,7 @@ class FrontController extends Singleton $parameters['widgetModule'] = $module; $parameters['widgetMethod'] = $action; - return array($container->get('Piwik\Plugins\CoreHome\Controller'), 'renderWidget'); + return array($container->make('Piwik\Plugins\CoreHome\Controller'), 'renderWidget'); } // TRY TO FIND ACTION IN REPORT @@ -158,7 +158,7 @@ class FrontController extends Singleton $parameters['reportModule'] = $module; $parameters['reportAction'] = $action; - return array($container->get('Piwik\Plugins\CoreHome\Controller'), 'renderReportWidget'); + return array($container->make('Piwik\Plugins\CoreHome\Controller'), 'renderReportWidget'); } if (!empty($action) && Report::PREFIX_ACTION_IN_MENU === substr($action, 0, strlen(Report @@ -170,7 +170,7 @@ class FrontController extends Singleton $parameters['reportModule'] = $module; $parameters['reportAction'] = $reportAction; - return array($container->get('Piwik\Plugins\CoreHome\Controller'), 'renderReportMenu'); + return array($container->make('Piwik\Plugins\CoreHome\Controller'), 'renderReportMenu'); } } diff --git a/core/StaticContainer.php b/core/StaticContainer.php index c78da90e51..35f486d801 100644 --- a/core/StaticContainer.php +++ b/core/StaticContainer.php @@ -11,7 +11,6 @@ namespace Piwik; use DI\Container; use DI\ContainerBuilder; use Doctrine\Common\Cache\ArrayCache; -use Interop\Container\ContainerInterface; /** * This class provides a static access to the container. @@ -28,7 +27,7 @@ class StaticContainer private static $container; /** - * @return ContainerInterface + * @return Container */ public static function getContainer() { -- cgit v1.2.3 From f5b6b4ccb021a3b082e578fc9a42c715985d1fae Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Fri, 31 Oct 2014 12:08:27 +1300 Subject: Use version 5.0.x-dev for PHP-DI --- composer.json | 2 +- composer.lock | 230 ++++------------------------------------------------------ 2 files changed, 17 insertions(+), 215 deletions(-) diff --git a/composer.json b/composer.json index db9e9c1537..7120659b8d 100644 --- a/composer.json +++ b/composer.json @@ -44,7 +44,7 @@ "mustangostang/spyc": "~0.5.0", "piwik/device-detector": "~2.0", "piwik/decompress": "~0.1.1", - "mnapoli/php-di": "~4.4.0" + "mnapoli/php-di": "5.0.x-dev" }, "require-dev": { "aws/aws-sdk-php": "2.7.1", diff --git a/composer.lock b/composer.lock index 7dff61dc40..75ee69696e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "0d42501de65a49e2e8fb665807027443", + "hash": "ad793a02e67244825709eb91b2280e59", "packages": [ { "name": "container-interop/container-interop", @@ -265,16 +265,16 @@ }, { "name": "mnapoli/php-di", - "version": "4.4.0", + "version": "5.0.x-dev", "source": { "type": "git", "url": "https://github.com/mnapoli/PHP-DI.git", - "reference": "556e3be63a821bbad0585a34f634080305392252" + "reference": "a0ecf28b1da0582f9f896cfa14b1a4a016a2b9b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mnapoli/PHP-DI/zipball/556e3be63a821bbad0585a34f634080305392252", - "reference": "556e3be63a821bbad0585a34f634080305392252", + "url": "https://api.github.com/repos/mnapoli/PHP-DI/zipball/a0ecf28b1da0582f9f896cfa14b1a4a016a2b9b5", + "reference": "a0ecf28b1da0582f9f896cfa14b1a4a016a2b9b5", "shasum": "" }, "require": { @@ -283,13 +283,21 @@ "doctrine/cache": "1.*", "mnapoli/phpdocreader": "~1.3", "myclabs/php-enum": "1.*", - "ocramius/proxy-manager": "~0.3", "php": ">=5.3.3" }, "require-dev": { + "ocramius/proxy-manager": "~0.3", "phpunit/phpunit": "~4.0" }, + "suggest": { + "ocramius/proxy-manager": "Install it if you want to use lazy injection" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, "autoload": { "psr-0": { "DI\\": "src/", @@ -311,7 +319,7 @@ "dependency injection", "di" ], - "time": "2014-10-14 06:13:26" + "time": "2014-10-30 22:52:26" }, { "name": "mnapoli/phpdocreader", @@ -426,69 +434,6 @@ ], "time": "2013-11-11 18:29:08" }, - { - "name": "ocramius/proxy-manager", - "version": "0.5.2", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5", - "reference": "0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "zendframework/zend-code": ">2.2.5,<3.0" - }, - "require-dev": { - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "1.5.*" - }, - "suggest": { - "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", - "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", - "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", - "zendframework/zend-stdlib": "To use the hydrator proxy", - "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.6.x-dev" - } - }, - "autoload": { - "psr-0": { - "ProxyManager\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", - "homepage": "https://github.com/Ocramius/ProxyManager", - "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" - ], - "time": "2014-09-28 14:18:11" - }, { "name": "piwik/decompress", "version": "0.1.1", @@ -723,150 +668,6 @@ "templating" ], "time": "2014-10-17 12:53:44" - }, - { - "name": "zendframework/zend-code", - "version": "2.3.3", - "target-dir": "Zend/Code", - "source": { - "type": "git", - "url": "https://github.com/zendframework/Component_ZendCode.git", - "reference": "78ea301533dd05f1c1759e8928d119804900446b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendCode/zipball/78ea301533dd05f1c1759e8928d119804900446b", - "reference": "78ea301533dd05f1c1759e8928d119804900446b", - "shasum": "" - }, - "require": { - "php": ">=5.3.23", - "zendframework/zend-eventmanager": "self.version" - }, - "require-dev": { - "doctrine/common": ">=2.1", - "zendframework/zend-stdlib": "self.version" - }, - "suggest": { - "doctrine/common": "Doctrine\\Common >=2.1 for annotation features", - "zendframework/zend-stdlib": "Zend\\Stdlib component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Zend\\Code\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides facilities to generate arbitrary code using an object oriented interface", - "homepage": "https://github.com/zendframework/zf2", - "keywords": [ - "code", - "zf2" - ], - "time": "2014-09-16 22:58:11" - }, - { - "name": "zendframework/zend-eventmanager", - "version": "2.3.3", - "target-dir": "Zend/EventManager", - "source": { - "type": "git", - "url": "https://github.com/zendframework/Component_ZendEventManager.git", - "reference": "4110fe64b10616b9bb71429a206d8e9e6d99e3ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendEventManager/zipball/4110fe64b10616b9bb71429a206d8e9e6d99e3ba", - "reference": "4110fe64b10616b9bb71429a206d8e9e6d99e3ba", - "shasum": "" - }, - "require": { - "php": ">=5.3.23", - "zendframework/zend-stdlib": "self.version" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Zend\\EventManager\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zf2", - "keywords": [ - "eventmanager", - "zf2" - ], - "time": "2014-09-16 22:58:11" - }, - { - "name": "zendframework/zend-stdlib", - "version": "2.3.3", - "target-dir": "Zend/Stdlib", - "source": { - "type": "git", - "url": "https://github.com/zendframework/Component_ZendStdlib.git", - "reference": "fa33e6647f830d0d2a1cb451efcdfe1bb9a66c33" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/fa33e6647f830d0d2a1cb451efcdfe1bb9a66c33", - "reference": "fa33e6647f830d0d2a1cb451efcdfe1bb9a66c33", - "shasum": "" - }, - "require": { - "php": ">=5.3.23" - }, - "require-dev": { - "zendframework/zend-eventmanager": "self.version", - "zendframework/zend-serializer": "self.version", - "zendframework/zend-servicemanager": "self.version" - }, - "suggest": { - "zendframework/zend-eventmanager": "To support aggregate hydrator usage", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Zend\\Stdlib\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zf2", - "keywords": [ - "stdlib", - "zf2" - ], - "time": "2014-09-16 22:58:11" } ], "packages-dev": [ @@ -1960,6 +1761,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { + "mnapoli/php-di": 20, "facebook/xhprof": 20 }, "prefer-stable": false, -- cgit v1.2.3 From f0d6769f22b056eec1c28cd6254c84d109d893f7 Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Fri, 31 Oct 2014 13:53:39 +1300 Subject: Updated PHP-DI dependency --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 8790535c19..d983793074 100644 --- a/composer.lock +++ b/composer.lock @@ -269,12 +269,12 @@ "source": { "type": "git", "url": "https://github.com/mnapoli/PHP-DI.git", - "reference": "a0ecf28b1da0582f9f896cfa14b1a4a016a2b9b5" + "reference": "018126838b9c3922ee23afff2d779af3d88f6740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mnapoli/PHP-DI/zipball/a0ecf28b1da0582f9f896cfa14b1a4a016a2b9b5", - "reference": "a0ecf28b1da0582f9f896cfa14b1a4a016a2b9b5", + "url": "https://api.github.com/repos/mnapoli/PHP-DI/zipball/018126838b9c3922ee23afff2d779af3d88f6740", + "reference": "018126838b9c3922ee23afff2d779af3d88f6740", "shasum": "" }, "require": { @@ -319,7 +319,7 @@ "dependency injection", "di" ], - "time": "2014-10-30 22:52:26" + "time": "2014-10-31 00:34:51" }, { "name": "mnapoli/phpdocreader", -- cgit v1.2.3 From be9d076fa409dba59ba1621c1445a5ef55a90943 Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Mon, 3 Nov 2014 15:25:58 +1300 Subject: Added legal notice for PHP-DI --- LEGALNOTICE | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/LEGALNOTICE b/LEGALNOTICE index 561e2ff82a..9d40d32ee6 100644 --- a/LEGALNOTICE +++ b/LEGALNOTICE @@ -228,6 +228,10 @@ THIRD-PARTY COMPONENTS AND LIBRARIES Link: https://github.com/ccampbell/mousetrap License: Apache 2.0 + Name: PHP-DI + Link: http://php-di.org/ + License: MIT (Expat) + THIRD-PARTY CONTENT -- cgit v1.2.3 From eb01c51015e59d1efc4185ac91b10118042e7c61 Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Tue, 4 Nov 2014 16:14:39 +1300 Subject: Revert "Injection of dependencies through annotations in controllers" This reverts commit 3668fde1861f0a192e794316e7ce848c6512bf76. --- plugins/Installation/Controller.php | 9 ++------- plugins/SitesManager/Controller.php | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php index 53039c3216..0dffcd343c 100644 --- a/plugins/Installation/Controller.php +++ b/plugins/Installation/Controller.php @@ -52,12 +52,6 @@ class Controller extends \Piwik\Plugin\ControllerAdmin 'finished' => 'Installation_Congratulations', ); - /** - * @Inject - * @var TrackerCodeGenerator - */ - private $trackerGenerator; - /** * Get installation steps * @@ -382,7 +376,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin // Load the Tracking code and help text from the SitesManager $viewTrackingHelp = new \Piwik\View('@SitesManager/_displayJavascriptCode'); $viewTrackingHelp->displaySiteName = $siteName; - $viewTrackingHelp->jsTag = $this->trackerGenerator->generate($idSite, Url::getCurrentUrlWithoutFileName()); + $javascriptGenerator = new TrackerCodeGenerator(); + $viewTrackingHelp->jsTag = $javascriptGenerator->generate($idSite, Url::getCurrentUrlWithoutFileName()); $viewTrackingHelp->idSite = $idSite; $viewTrackingHelp->piwikUrl = Url::getCurrentUrlWithoutFileName(); diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php index cca2f1ff19..e7299ab03e 100644 --- a/plugins/SitesManager/Controller.php +++ b/plugins/SitesManager/Controller.php @@ -22,12 +22,6 @@ use Piwik\View; */ class Controller extends \Piwik\Plugin\ControllerAdmin { - /** - * @Inject - * @var TrackerCodeGenerator - */ - private $trackerGenerator; - /** * Main view showing listing of websites and settings */ @@ -102,7 +96,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin { $idSite = Common::getRequestVar('idSite'); Piwik::checkUserHasViewAccess($idSite); - $jsTag = $this->trackerGenerator->generate($idSite, SettingsPiwik::getPiwikUrl()); + $javascriptGenerator = new TrackerCodeGenerator(); + $jsTag = $javascriptGenerator->generate($idSite, SettingsPiwik::getPiwikUrl()); $site = new Site($idSite); return $this->renderTemplate('displayJavascriptCode', array( -- cgit v1.2.3