マイクロフレームワークSlimでCakePHPのORMを使おう
はじめに
こんにちは。マイクロフレームワークっていいですよね。
何も考えずとも機能を一揃えしてくれるフルスタックフレームワークも良いですが、作りたいアプリケーションに必要な機能を見定めてライブラリを導入する、みたいな作業は男の子が好きなロボットのカスタマイズ感があり、くすぐられますね。
僕は普段CakePHPerなので、今回はSlimでもCakePHPのORMを使えるようにしてみます。
なお、僕がSlimのチュートリアルに使ったリポジトリはGithubに置いといたので、コミットログを見ながら追っていくとわかりやすいかもしれません。作りかけです。
Slimの導入
公式をはじめチュートリアルがたくさんあるので探してみてください。
マイグレーションの導入 - robmorgan/phinx
ORMの導入前に、マイグレーションツールを入れておきましょう。 別に必須というわけではありませんが、入れない理由もないですね。
CakePHPでも使われているrobmorgan/phinxを使用します。
phinxはCakePHPではbin/cake migrations
として組み込まれていますが、もとは独立したライブラリなのでSlimへの導入も特別なことをする必要はありません。公式マニュアルなどを見れば使用法は書いてあるのでここでは手順をさっくりと流します。
composer require robmorgan/phinx
composerによるインストールコマンドです。
vendor/bin/phinx init
初期化処理です。設定ファイルphinx.yml
が生成されます。
paths: migrations: '%%PHINX_CONFIG_DIR%%/db/migrations' seeds: '%%PHINX_CONFIG_DIR%%/db/seeds' ... development: adapter: mysql host: db name: slim_todo user: root pass: root port: 3306 charset: utf8mb4
phinx.ymlの主な設定項目です。paths
で設定したディレクトリはマイグレーション実行前に作成しておくとよいです。
これで使えるようになりました。
ORMの導入 - cakephp/orm
さて、本題です。CakePHPのORMをSlimに導入します。
composer require cakephp/orm
CakePHPのORMだけをcomposerでインストールすることができます。
cakephp/ormをインストールすると使えるようになるConnectionManager
でDBの設定ファイルを作成しました。
SlimのDIコンテナにTableLocator
のインスタンスを入れておきます。
DIコンテナの使い方は↓のあたりにも解説があります。
http://www.slimframework.com/docs/v3/tutorial/first-app.html#add-dependencies
あとは先ほどDIコンテナに詰めた$this->locator
からTableインスタンスを受け取り、いつものようにCakePHPのORMを使えます。できましたね。