PHPのslim3で環境構築

久しぶりにslim3で素のフォームを作るまでを勉強しなおしたので筆をとりました。
この記事ではコントローラの追加までを記述します。

slimはマイクロフレームワークですが、公式でスケルトン機能を用意されているのでそれを利用します。

github.com

ケルトンをチェックアウト

$ php composer.phar create-project slim/slim-skeleton sample
Installing slim/slim-skeleton (3.1.2)
  - Installing slim/slim-skeleton (3.1.2): Downloading (100%)
~(略)~
Writing lock file
Generating autoload files
$

すると以下のような感じのディレクトリ構成で環境が作成されます。

sample
|-- CONTRIBUTING.md
|-- Makefile
|-- README.md
|-- composer.json
|-- composer.lock
|-- composer.phar
|-- logs
|-- phpunit.xml
|-- public
|   `-- index.php
|-- src
|   |-- dependencies.php
|   |-- middleware.php
|   |-- routes.php
|   `-- settings.php
|-- templates
|   `-- index.phtml
|-- tests
|   `-- Functional
`-- vendor

これでpublicディレクトリをドキュメントルートに設定すると簡単な画面が表示されます。

f:id:taka512:20170401231509p:plain
ルーティングにコントローラを追加する前にクラスのオートロード設定を追加します。

具体的にはcomposer.jsonに以下の記述を追加して更新します。

$ vi composer.json
    "autoload": {
        "psr-4": {
            "Sample\\": "src/Sample/"
        }
    },
$ php composer.phar update

ルーティングのファイルを編集します

$ vi src/routes.php
<?php
// Routes
$app->get('/', \Sample\Controller\TopController::class . ':index');

コントローラのファイルを追加します

$ vi src/Sample/Controller/TopController.php
<?php

namespace Sample\Controller;

use Psr\Container\ContainerInterface;

class TopController
{
    protected $container;
    public function __construct(ContainerInterface $container){
        $this->container = $container;
    }
    public function index($request, $response, $args){
        echo 'Hello World';
        return $response;
    }
}

これで再度トップページにアクセスすると「Hello World」と表示されるようになります。