PHPのslim3で環境構築
久しぶりにslim3で素のフォームを作るまでを勉強しなおしたので筆をとりました。
この記事ではコントローラの追加までを記述します。
slimはマイクロフレームワークですが、公式でスケルトン機能を用意されているのでそれを利用します。
スケルトンをチェックアウト
$ 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ディレクトリをドキュメントルートに設定すると簡単な画面が表示されます。
ルーティングにコントローラを追加する前にクラスのオートロード設定を追加します。
具体的には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」と表示されるようになります。