Changeset 110954 in spip-zone


Ignore:
Timestamp:
Jul 1, 2018, 2:36:59 PM (19 months ago)
Author:
marcimat@…
Message:

On passe de Pimple à Simplex pour le conteneur.

Mise à jour :
`
svn update
composer install
`

Effectivement à la base le conteneur Pimple était là bien avant l’arrivée de PSR11 (et des suites comme le ServiceProviderInterface?),
et le fork Simplex a été fait pour suivre nativement entre autres la ConteneurInterface? tout en ayant la même fonctionnement que Pimple.
https://github.com/mnapoli/simplex

Par cohérence avec la ConteneurInterface?, on utilise ->has() ou ->get() pour tester ou obtenir un élément du conteneur.
Et par cohérence avec ça, on utilise ->set(x, y) pour définir un élément.

Location:
_outils_/spip-cli/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/composer.json

    r110803 r110954  
    88        "symfony/console": "^2.8",
    99        "symfony/finder": "^2.8",
    10         "pimple/pimple" : "^3.2",
    11         "symfony/process": "^2.8"
     10        "symfony/process": "^2.8",
     11        "mnapoli/simplex": "^0.5.0"
    1212    },
    1313    "config": {
  • _outils_/spip-cli/trunk/composer.lock

    r110802 r110954  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "0a25b59cb6da483a570507d308fd73c8",
     7    "content-hash": "364764948e467588201febae4143b59e",
    88    "packages": [
    99        {
    10             "name": "pimple/pimple",
    11             "version": "v3.2.3",
    12             "source": {
    13                 "type": "git",
    14                 "url": "https://github.com/silexphp/Pimple.git",
    15                 "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
    16             },
    17             "dist": {
    18                 "type": "zip",
    19                 "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
    20                 "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
    21                 "shasum": ""
    22             },
    23             "require": {
     10            "name": "container-interop/service-provider",
     11            "version": "v0.4.0",
     12            "source": {
     13                "type": "git",
     14                "url": "https://github.com/container-interop/service-provider.git",
     15                "reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
     16            },
     17            "dist": {
     18                "type": "zip",
     19                "url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
     20                "reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
     21                "shasum": ""
     22            },
     23            "require": {
     24                "psr/container": "^1.0"
     25            },
     26            "type": "library",
     27            "autoload": {
     28                "psr-4": {
     29                    "Interop\\Container\\": "src/"
     30                }
     31            },
     32            "notification-url": "https://packagist.org/downloads/",
     33            "license": [
     34                "MIT"
     35            ],
     36            "description": "Promoting container interoperability through standard service providers",
     37            "homepage": "https://github.com/container-interop/service-provider",
     38            "time": "2017-09-20T14:13:36+00:00"
     39        },
     40        {
     41            "name": "mnapoli/simplex",
     42            "version": "0.5.0",
     43            "source": {
     44                "type": "git",
     45                "url": "https://github.com/mnapoli/simplex.git",
     46                "reference": "cdc81c738262739f4f35e911f6888da9ee59016b"
     47            },
     48            "dist": {
     49                "type": "zip",
     50                "url": "https://api.github.com/repos/mnapoli/simplex/zipball/cdc81c738262739f4f35e911f6888da9ee59016b",
     51                "reference": "cdc81c738262739f4f35e911f6888da9ee59016b",
     52                "shasum": ""
     53            },
     54            "require": {
     55                "container-interop/service-provider": "~0.4.0",
    2456                "php": ">=5.3.0",
    2557                "psr/container": "^1.0"
    2658            },
    2759            "require-dev": {
    28                 "symfony/phpunit-bridge": "^3.2"
    29             },
    30             "type": "library",
    31             "extra": {
    32                 "branch-alias": {
    33                     "dev-master": "3.2.x-dev"
    34                 }
    35             },
    36             "autoload": {
    37                 "psr-0": {
    38                     "Pimple": "src/"
     60                "phpunit/phpunit": "~4.0"
     61            },
     62            "type": "library",
     63            "autoload": {
     64                "psr-4": {
     65                    "Simplex\\": "src/Simplex"
    3966                }
    4067            },
     
    4774                    "name": "Fabien Potencier",
    4875                    "email": "fabien@symfony.com"
    49                 }
    50             ],
    51             "description": "Pimple, a simple Dependency Injection Container",
    52             "homepage": "http://pimple.sensiolabs.org",
     76                },
     77                {
     78                    "name": "Matthieu Napoli",
     79                    "email": "matthieu@mnapoli.fr"
     80                }
     81            ],
     82            "description": "Pimple fork with full container-interop support",
     83            "homepage": "https://github.com/mnapoli/simplex",
    5384            "keywords": [
    5485                "container",
    5586                "dependency injection"
    5687            ],
    57             "time": "2018-01-21T07:42:36+00:00"
     88            "time": "2018-02-13T08:14:36+00:00"
    5889        },
    5990        {
  • _outils_/spip-cli/trunk/src/Application.php

    r110941 r110954  
    33namespace Spip\Cli;
    44
    5 use Pimple\Container;
     5use Psr\Container\ContainerInterface;
     6use Simplex\Container;
    67use Spip\Cli\Console\Style\SpipCliStyle;
    78use Symfony\Component\Console\Application as ConsoleApplication;
     
    1617
    1718        const NAME = "Spip Cli";
    18         const VERSION = "0.4.1";
    19         protected $options = [];
     19        const VERSION = "0.5.0";
     20
     21        /** @var Container */
    2022        protected $container;
    2123
     
    3133                parent::__construct(self::NAME, self::VERSION);
    3234
    33                 $this->container = new Container([
     35                $this->container = new Container([], $options + [
    3436                        'debug' => false,
    3537                        'spip.directory' => null,
     
    4143                ]);
    4244
    43                 // todo: config file
    44                 foreach ($options as $key => $value) {
    45                         $this->container[$key] = $value;
    46                 }
    47 
    4845                $this->setTimezone();
    4946                $this->registerServices();
     
    5754                $app = $this;
    5855                $container = $this->container;
    59                 $container['console.io'] = function() use ($app) {
     56                $container->set('console.io', function() use ($app) {
    6057                        return function(InputInterface $input = null, OutputInterface $output = null) use ($app) {
    6158                                if (null === $input) {
     
    6865                                return new Console\Style\SpipCliStyle($input, $output);
    6966                        };
    70                 };
    71                 $container['loader.spip'] = function ($container) {
    72                         $spip = new Loader\Spip($container['spip.directory']);
     67                });
     68                $container->set('loader.spip', function (ContainerInterface $container) {
     69                        $spip = new Loader\Spip($container->get('spip.directory'));
    7370                        $spip->setContainer($container);
    7471                        return $spip;
    75                 };
    76                 $container['sql.query'] = function ($container) {
    77                         $connect = $container['loader.spip']->getPathConnect();
     72                });
     73                $container->set('sql.query', function (ContainerInterface $container) {
     74                        $connect = $container->get('loader.spip')->getPathConnect();
    7875                        if (!is_file($connect)) {
    7976                                throw new \Exception('SPIP database is not configured');
     
    8178                        $sql = new Loader\Sql($connect);
    8279                        return new Sql\Query($sql);
    83                 };
     80                });
    8481        }
    8582
     
    9289        public function loadSpip() {
    9390                try {
    94                         $spip = $this->container['loader.spip'];
     91                        $spip = $this->container->get('loader.spip');
    9592                        $spip->load();
    9693                } catch (\Exception $e) {
     
    149146                        global $spip_racine, $spip_loaded, $cwd;
    150147                        $cwd = getcwd();
    151                         $spip = $this->container['loader.spip'];
     148                        $spip = $this->container->get('loader.spip');
    152149                        $spip_racine = $spip->getDirectory();
    153150                        $spip_loaded = $spip->load();
     
    165162        public function registerSpipCliPluginsCommands() {
    166163                try {
    167                         $spip = $this->container['loader.spip'];
     164                        $spip = $this->container->get('loader.spip');
    168165                        if (!$spip->load()) {
    169166                                return false;
     
    208205
    209206        public function getService($name) {
    210                 return $this->container[$name];
     207                return $this->container->get($name);
    211208        }
    212209
     
    217214         */
    218215        public function getIo(InputInterface $input = null, OutputInterface $output = null) {
    219                 return $this->container['console.io']($input, $output);
     216                $io = $this->container->get('console.io');
     217                return $io($input, $output);
    220218        }
    221219
  • _outils_/spip-cli/trunk/src/Command/PluginsLister.php

    r110950 r110954  
    9696        public function getExportFile(InputInterface $input) {
    9797                $name = $input->getOption('name') . '.txt';
    98                 $file = _DIR_TMP . $name;
    9998                return _DIR_TMP . $name;
    10099        }
  • _outils_/spip-cli/trunk/src/Command/TestSpip.php

    r110824 r110954  
    44
    55use Spip\Cli\Console\Command;
    6 use Spip\Cli\Console\Style\SpipCliStyle;
    76use Spip\Cli\Loader\Spip;
    87use Spip\Cli\Loader\Sql;
     8use Spip\Cli\Sql\Query;
    99use Symfony\Component\Console\Input\InputInterface;
    1010use Symfony\Component\Console\Output\OutputInterface;
     
    102102
    103103                try {
    104                         /** @var Sql $sql */
     104                        /** @var Query $sql */
    105105                        $sql = $this->getService('sql.query');
    106106                        $pdo = $sql->getPdo();
     
    108108                        $io->fail('Echec de chargement du PDO');
    109109                        if ($sql) {
    110                                 $io->fail('DSN: ' . $sql->getPdoDsn($sql->getInfo()));
     110                                /** @var Sql $loader */
     111                                $loader = $sql->getLoaderSql();
     112                                $io->fail('DSN: ' . $loader->getPdoDsn($loader->getInfo()));
    111113                        }
    112114                        $io->fail($e->getMessage());
     
    142144                $io = $this->io;
    143145                try {
    144                         /** @var Sql $sql */
     146                        /** @var Query $sql */
    145147                        $sql = $this->getService('sql.query');
    146148                        $adresse = $sql->getMeta('adresse_site');
  • _outils_/spip-cli/trunk/src/Console/Command.php

    r110872 r110954  
    33namespace Spip\Cli\Console;
    44
     5use Simplex\Container;
    56use Spip\Cli\Console\Style\SpipCliStyle;
    67use Spip\Cli\Loader\Spip;
     
    3536        /**
    3637         * Returns the application container.
    37          * @return \Pimple\Container
     38         * @return Container
    3839         */
    3940        public function getContainer() {
  • _outils_/spip-cli/trunk/src/Loader/Spip.php

    r110822 r110954  
    33namespace Spip\Cli\Loader;
    44
    5 use Pimple\Container;
     5use Psr\Container\ContainerInterface;
    66use Spip\Cli\Sql\Query;
    77use Spip\Cli\Tools\Files;
     
    3232        private $exists;
    3333
    34         /** @var Container */
    35         private $app;
     34        /** @var ContainerInterface */
     35        private $container;
    3636
    3737        /**
     
    295295
    296296                // Éviter des notices. Il faudrait utiliser HTTPFondation\Request dans SPIP.
    297                 if (!$this->app['debug']) {
     297                if (!$this->container->get('debug')) {
    298298                        foreach (['SERVER_NAME', 'SERVER_PORT', 'REQUEST_METHOD', 'REQUEST_URI'] as $key) {
    299299                                if (!isset($_SERVER[$key])) {
     
    338338
    339339        /**
    340          * Sets a pimple instance onto this application.
    341          *
    342          * @param Container $app
     340         * Sets a container instance onto this application.
     341         *
     342         * @param ContainerInterface $container
    343343         * @return void
    344344         */
    345         public function setContainer(Container $app) {
    346                 $this->app = $app;
     345        public function setContainer(ContainerInterface $container) {
     346                $this->container = $container;
    347347        }
    348348}
  • _outils_/spip-cli/trunk/src/Mutualisation/Application.php

    r110791 r110954  
    33namespace Spip\Cli\Mutualisation;
    44
    5 use Pimple\Container;
     5use Simplex\Container;
    66use Symfony\Component\Console\Application as ConsoleApplication;
    77use Symfony\Component\Console\Input\InputInterface;
     
    2525                parent::__construct(self::NAME, self::VERSION);
    2626
    27                 $this->container = new Container([
     27                $this->container = new Container([],$options + [
    2828                        'debug' => false,
    2929                        'spip.directory' => null,
    3030                        'path.spip-cli' => '/usr/local/bin/spip',
    3131                ]);
    32 
    33                 // todo: config file
    34                 foreach ($options as $key => $value) {
    35                         $this->container[$key] = $value;
    36                 }
    3732        }
    3833
     
    8277
    8378        public function getService($name) {
    84                 return $this->container[$name];
     79                return $this->container->get($name);
    8580        }
    8681
  • _outils_/spip-cli/trunk/src/Sql/Query.php

    r110874 r110954  
    2727        public function getPdo() {
    2828                return $this->sql->getPdo();
     29        }
     30
     31        /**
     32         * Retourne le loader SQL
     33         * @return Sql
     34         */
     35        public function getLoaderSql() {
     36                return $this->sql;
    2937        }
    3038
Note: See TracChangeset for help on using the changeset viewer.