slimでネームスペースを利用するように修正

プロジェクトディレクトリの構造化を行っていきます。
今回は前回index.phpに作成したNameServiceクラスをファイルから分離して、ネームスペースを利用するように修正します。

composer.jsonの修正

autoloadの項目を追加します。srcが設定ディレクトリで「Taka512」ネームスペースとなります。

$ vi composer.json
    "require": {
        "slim/slim": "2.*",
        "slim/extras": "2.0.*",
        "twig/twig": "1.*",
        "pimple/pimple": "1.0.0"
    },
    "autoload": {
        "psr-0": { "Taka512": "src/"}
    }
$ php composer.phar update

ディレクトリの作成

先ほどautoloadで設定したディレクトリを作成します。

$ mkdir -p src/Taka512/Services

NameServiceライブラリの作成

NameServiceクラスをファイルに分離します。今回の例ではネームスペースは「Taka512\Services」となります。
constructのPimpleの前に「\」マークをつけるのを忘れないようにしましょう。つけないと「Taka512\Service\Pimple」を探しに行ってエラーとなります。

$ vi src/Taka512/Services/NameService.php
<?php

namespace Taka512\Services;

class NameService
{
    protected $di;
    public function __construct(\Pimple $di)
    {
        $this->di = $di;
    }

    public function getName()
    {
        return 'taka512';
    }
}

index.phpの修正

index.phpからNameServiceクラスを削除して、サービスの定義の部分のネームスペースを変更します。

$container['NameService'] = $container->share(function ($container) {
    return new \Taka512\Services\NameService($container);
});

これでネームスペースを利用してライブラリをもりもり作っていけるようになりました。