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); });
これでネームスペースを利用してライブラリをもりもり作っていけるようになりました。