facebook twitter hatena line email

Php/pimple

提供: 初心者エンジニアの簡易メモ
2017年9月9日 (土) 22:24時点におけるAdmin (トーク | 投稿記録)による版 (composerによるインストール)

移動: 案内検索

pimpleとは

DIコンテナのphpライブラリ

composerによるインストール

$ vi composer.json

{
   "require": {
       "pimple/pimple": "v3.*.*"
   }
}

>Installing pimple/pimple (v3.2.2)

$ php composer.phar install

DLされたPimple

vendor/pimple/pimple/src/
└── Pimple
   ├── Container.php
   ├── Exception
   │   ├── ExpectedInvokableException.php
   │   ├── FrozenServiceException.php
   │   ├── InvalidServiceIdentifierException.php
   │   └── UnknownIdentifierException.php
   ├── Psr11
   │   ├── Container.php
   │   └── ServiceLocator.php
   ├── ServiceIterator.php
   ├── ServiceProviderInterface.php
   └── Tests
       ├── Fixtures
       │   ├── Invokable.php
       │   ├── NonInvokable.php
       │   ├── PimpleServiceProvider.php
       │   └── Service.php
       ├── PimpleServiceProviderInterfaceTest.php
       ├── PimpleTest.php
       ├── Psr11
       │   ├── ContainerTest.php
       │   └── ServiceLocatorTest.php
       └── ServiceIteratorTest.php

サンプル

$ vi ServiceInterface.php

namespace App\Services;
interface ServiceInterface
{
    public function doSomething();
}

$ vi Service.php

namespace App\Services;
class Service implements ServiceInterface
{
       public function doSomething()
       {
            return "hoge";
       }
}

$ vi PimpleexaController.php

use Pimple\Container;
use App\Services\Service;
class PimpleexaController extends Controller
{
       public function index()
       {
            $container = new Container();
            $container['service'] = function ($container) {
                $service = new Service();
                return $service;
            };
            $service = $container['service'];
            echo $service->doSomething(); // hoge
       }
}