thumbnail
thumbnail

FlightPHPを使ってみた

updated 2022-1-24

動機

LaravelPHPもCakePHPもLaminasも大きすぎる...
もっとルーターとページだけのシンプルなやつでいいんだ...
CodeIgniterはドキュメント分かりにくすぎるし、FuelPHPは...し,死んでる...?

FlightPHPとは

FlightPHPはかなりシンプルな作りになっている
Insight見るとまだ若干動いているよう

インストールから起動

Composerを使ってインストールするので入れておいて欲しい composerはphpのパッケージマネージャみたいなものでnpmみたいに使える

composer require mikecao/flight my-app

my-appのとこにプロジェクトの名前を入れる
すでにmy-appがあればその中でcomposer require mikecao/flightでOK

シンプルが売りらしいがしっかり最小構成になってる
composerの設定とライブラリがvendorに入っているだけ

Apacheの設定

.htaccessをルートに用意する

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

Index.php

フォルダ構成はこんな感じで

- vendor
- views <- ページとか
- assets <- 画像とかcssとか
- .vscode <- VSCodeでscssをコンパイルする用の設定とか
- index.php <- 設置

ルートにIndex.phpを作成してlayoutとかルーターとか設置する

<?php
require 'vendor/autoload.php';

Flight::set("layout", "views/templates/layout.php");

Flight::route('/', function(){
    echo 'hello world!';
});

Flight::start();

デフォルトだとviewsのファイルを読みにいくけど
Flight::set("flight.views.path", "/kokodayo");
これでkokodayoフォルダを読みに行く

Flight::render("gyudon", "3color/cheese");
こう書いたらFlight::get("gyudon")kokodayo/3color/cheese.phpを読み込める

起動

php -S localhost:8080

ブラウザでlocalhost:8080を開けばhello worldが返ってくる

関数とか

公式ページにまとまってる

サンプルとか

Hot Example

Herokuにデプロイしてみる

Gitの設定

まずGitを設定

git init
git commit -m "[init]"

リモートの設定

Herokuにアプリを作成して、リモートに設定

heroku apps:create my-app
heroku git:remote -a my-app

Procfileを作成してコミットする

touch Procfile

Procfileには以下のように記載する

web: vendor/bin/heroku-php-apache2

ファイルを追加したので、コミットする

git add Procfile
git commit -m "[build] add Procfile"

リモートにデプロイ

リモートにPushする

git push heroku master
heroku open

アプリ名を指定してもOK

heroku open -a my-app

PHP8.1以降だとエラーが出るかも...

エラーが出た場合にはheroku logs -tでログが見られるので確認する

FlightPHPにはバージョン2があるので、PHP8.1以降を使っている場合には、
再インストールが必要

composer require mikecao/flight:2.0.1

これでもう一度デプロイしてみると良いかも

参考

Flight PHP