Help us understand the problem. What is going on with this article?

slim3のskeletonプロジェクトを作りました

More than 1 year has passed since last update.

仕事用のテンプレートでREADME書いてなくてすみません。
https://github.com/ya-sasaki/slim3-skeleton

マイクロフレームワークのSlim3(PHPですよ)

ひと昔前にGoogle App Engine用のSlim3(java)というのがありましたが、違います。PHPです。
5年ぐらいFuelPHPで仕事してますが、素のFuelPHPでは開発せず、随所で薄い拡張を施します。
プロジェクトによって拡張も改良するのですが、如何せん属人的で開発がうまく進まないことがありました。
(Coreの中を読める人がいないので、丸投げすると上手くいかない)

https://www.slimframework.com/docs/
マイクロっていうぐらいなので、ドキュメントがこんなものしかありませんがこれで十分です。
必要なものは全部Composerで調達し、フレームワーク自体の教育はほぼ不要。
多少プロジェクトが肥大しても大丈夫なような構成(スケルトンが)にしてあるから、
各自頑張ってねというスタイルにしようと思ってます(というかそうします)

個人的にLaravel microなlumenの方が美しくて好きなのですが、
「大体Laravelと一緒だからLaravelのドキュメント見てね」
というLaravelナレッジありきな感じなので今回は却下。
Laravelが不動の地位になったときに考える。

バージョンとか

PHP7, ES6, SASSを使うのでNodeも必要
(執筆時点です)

  • PHP 7.0.13(開発環境はビルトインサーバ)
  • Node 6.9.2
  • Npm 3.10.9

サードパーティ(PHPの)

FuelPHPのクエリビルダのようなものがidiorm、ORMのようなものがparisですね。
viewはLaravelのbladeがいいなと思ってたのでbladeだけ使わせてもらいます。

  • slim (FW本体)
  • monolog (ロガー)
  • idiorm (ORM)
  • paris (ORM)
  • laravel-blade

Install

git clone, composer install, npm install, gulp

ViewEngine

laravel-bladeが嫌な人はcomposerでengine追加して

lib/http/Controller.php
    public function view() {
        $app_dir = ROOT.$this->app->namespace . "/";
        $engine = new \Philo\Blade\Blade($app_dir . "views/", $app_dir . "views_cache/");
        return $engine->view();
    }

このあたりを書き換えてもらえればと思います。

module化

スケルトン上はappがmoduleに相当します。
bootstrap/routes.phpでアプリケーションコンテナにnamespaceを指定すると
そのフォルダのviewを参照するようになります。

bootstrap/routes.php
<?php

$app->group("", function() use($app) {
    // namespace を付与
    $app->namespace = "app";
    $controller = new App\Controller\HomeController($app);
    $app->get("/", $controller("index"));
});

管理画面のURLを/adminとする場合は

bootstrap/routes.php
<?php

$app->group("/admin", function() use($app) {
    // namespace を付与
    $app->namespace = "admin";
    $controller_home = new Admin\Controller\HomeController($app);
    $app->get("/", $controller_home("index"));
    $controller_user = new Admin\Controller\UserController($app);
    $app->get("/users", $controller_user("index"));
});

単純ですね。

ジョブ

ジョブ実行はWebではないので、dependencies, middleware, settingあたりだけロードすれば十分実装可能です。
また、PSR-4でautoloadされているので、既成のプログラム等も自由に利用可能です。

Gulp

テスト時はデフォルトでPHPビルトインサーバの起動、ES6,SASSの変更監視をしてブラウザに同期します。
デプロイ用のbuildタスクでES6、SASSのコンパイルをします。(ES6はトランスパイルだけど、、、)

$ gulp (テスト時)
$ gulp build (コンパイルだけ)

今後もこのスケルトンは今後も更新していきますが、やりすぎないように気を付けます。
(気が付くとフルスタックになってるかもしれないので)

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away