tsyama記

プログラミングとそのほか

マイクロフレームワークSlimでCakePHPのORMを使おう

はじめに

こんにちは。マイクロフレームワークっていいですよね。

何も考えずとも機能を一揃えしてくれるフルスタックフレームワークも良いですが、作りたいアプリケーションに必要な機能を見定めてライブラリを導入する、みたいな作業は男の子が好きなロボットのカスタマイズ感があり、くすぐられますね。

僕は普段CakePHPerなので、今回はSlimでもCakePHPのORMを使えるようにしてみます。

なお、僕がSlimのチュートリアルに使ったリポジトリGithubに置いといたので、コミットログを見ながら追っていくとわかりやすいかもしれません。作りかけです。

github.com

Slimの導入

公式をはじめチュートリアルがたくさんあるので探してみてください。

www.slimframework.com

qiita.com

マイグレーションの導入 - 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を使えます。できましたね。