初めに
PHPの「Flow」というフレームワークをご存じですか?
おそらくこのフレームワークを知っている人は少ないと思います。自分もその一人でした。
先日たまたまFlowを触る機会があり、とりあえずQuickstartを試してみるかと思ったのですが
- 公式ドキュメントの手順が省略されていて、PHP初心者には難しい
- マイナーすぎて参考資料が出てこない
ということに苦しめられ、なかなか環境構築が進みませんでした。
github-copilotに助けられながらなんとか完了することができたので、今回は公式ドキュメントのQuickstartのソースを元に環境構築方法をまとめてみました!
Flowとは
Flowとはflownative社が出しているオープンソースのPHPフレームワークです。
ドメイン駆動設計(DDD)を中心原理として設計されたフレームワークであり、DDDを満たすための機能を多く提供しているらしいです(自分もまだ試せてないですが)。
また、Railsのように、flow
というコマンドを実行することでクラス作成やキャッシュクリアなど様々な操作がコマンドでできるという特徴があります。
公式ドキュメントはこちら。
環境構築
ということで、Flowを環境構築していきます。
公式ドキュメントのQuickstartを立ち上げていきます。
環境
- OS:Windows11 Pro
- PHP:8.1.25
- Flow:8.3.5
- composer:2.6.5
1.PHPのインストール
PHP公式サイトからPHPを落としてきます。
Thread Safe
とNon Thread Safe
の二つがありますが、自分は前者をインストールしました。
インストールが完了したらパスを通しておきましょう。
$ php -v
PHP 8.1.25 (cli) (built: Oct 25 2023 08:06:57) (ZTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.1.25, Copyright (c) Zend Technologies
以下のサイトを参考にしました。
2.composerのインストール
composerとは、PHPにおけるライブラリ管理ツールです。
Flowをダウンロードする際に利用するため、ここでインストールしておきます。
こちらのダウンロードページからComposer-Setup.exe
をダウンロードし、インストールを実施してださい。
$ composer -V
Composer version 2.6.5 2023-10-06 10:11:52
以下のサイトを参考にしました。
3.FlowのQuickstart用ソースコードをインストール
composerを用いて、以下のコマンドでQuickstartのソースコードをダウンロードします。
$ composer create-project --keep-vcs neos/flow-base-distribution Quickstart
Creating a "neos/flow-base-distribution" project at "./Quickstart"
Installing neos/flow-base-distribution (8.3.5)
- Syncing neos/flow-base-distribution (8.3.5) into cache
~中略~
> Neos\Flow\Composer\InstallerScripts::postPackageUpdateAndInstall
33 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
87 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> Neos\Flow\Composer\InstallerScripts::postUpdateAndInstall
No security vulnerability advisories found.
ダウンロードできました。
ディレクトリ構成は以下のような感じです。
Quickstart
├ bin/
├ Build/
├ Configuration/
├ Data/
├ DistributionPackages/
├ Packages/
| ├ Application/
| ├ Framework/
| └ Libraries/
├ Web/
├ .editorconfig
├ .gitignore
├ composer.json
├ composer.lock
├ flow
├ flow.bat
└ Readme.rst
Packages/Framework
の中にFWのソースが入っています。
Packages/Application
の中には動作確認使用するに使用するソースが入っています。
前述したflowコマンドはプロジェクト直下のflow
というファイルが実行ファイルになっています。なので、コマンドの実行はプロジェクト直下で行う必要があります。
4.Setting.yamlの作成
プロジェクト直下のConfiguration
フォルダの中にあるSettings.yaml.example
をコピーし、同フォルダにSettings.yaml
を作成しましょう。
その際、Neos -> core -> phpBinaryPathAndFilename
のコメントアウトを解除し、「1.PHPのインストール」で落としてきたphp.exe
のパスに変更します。
Neos:
Flow:
persistence:
backendOptions:
driver: 'pdo_mysql' # use pdo_pgsql for PostgreSQL
charset: 'utf8mb4' # change to utf8 when using PostgreSQL
host: '127.0.0.1' # adjust to your database host
mvc:
routes:
'Neos.Flow': TRUE
core:
phpBinaryPathAndFilename: 'C:/php-8.1.25/php.exe'
Settings.yaml
にてMySQLの設定が記述されていますが、今回は使用しません。
コメントアウトしてもしなくても結果が変わらないため、今回はそのままとしてます。
気になる場合はコメントアウトしましょう。
5.php.iniファイルの修正
php.ini
ファイルを確認し、;extension=mysqli
と;extension=pdo_mysql
のコメントアウトを解除します。
これにより、phpのmysqlとPDO_MySQLの拡張機能を有効にすることができます。
QuickstartではMySQLの環境構築は不要です。
ですが、Flowを立ち上げる際にFlowがMySQLのドライバを探しているようで、この設定をしてないとドライバを見つけられずエラーになります。
6.サーバを立ち上げる
プロジェクト直下で以下のflowコマンドを実行し、ローカルホストでサーバを立ち上げます。
コマンドが実行できない場合、PowerShellを管理者権限で開いて実行してみてください。
$ ./flow server:run
Server running. Please go to http://127.0.0.1:8081 to browse the application.
[Tue Nov 14 21:46:43 2023] PHP 8.1.25 Development Server (http://127.0.0.1:8081) started
サーバが立ち上がったら、http://127.0.0.1:8081 にアクセスしてみましょう。
以下のような画面が表示されたら、環境構築成功です!
・・・結構モダンな画面ですね、驚きました。
ちなみに、公式ドキュメントに書いてあるWelcomeページはもっと簡素なものでした。もしかしたら手順が更新されていないのかもしれないですね。
終わりに
今回はPHPのFlowというフレームワークの環境構築を行いました。
もう少し触ってみる予定なので、また何か分かったことがあれば記事にしようと思います!
参考資料
https://flowframework.readthedocs.io/en/stable/Quickstart/index.html
https://webukatu.com/wordpress/blog/30447/
https://weblabo.oscasierra.net/php-composer-windows-install/