Slimフレームワークの中でDoctrineを使ってDB操作を試す


■ 目次

  1. 概要
  2. 環境準備
  3. MySQLのデータを準備
  4. サンプルプログラム準備
  5. サンプルプログラム解説

■ 概要

Doctrineを使ってPHPからデータベースを操作する

DoctrineとはORMツールで、ORMとはオブジェクト関係マッピング(Object relational mapping)というDBのデータとPHPのクラスをマッピングして変換する技法である

今回はPHPのマイクロフレームワークであるSlimの中でDoctrineを使ったDB操作サンプルプログラムを試す

■ 環境準備

PHP/MySQL環境の作成方法は別ページにまとめたのでそれを使って準備する

CentOS6系にMySQL5.7とPHP5.6系を入れる

■ MySQLのデータを準備

以下のSQLを実施してDoctrine操作用のデータを準備する

mysql> create database MYDB;
mysql> create table MYDB.BOOK (book_id varchar(255) not null, name varchar(255) not null, created_date datetime default current_timestamp);
mysql> insert into MYDB.BOOK (book_id, name) values ('0000', 'hoge0');
mysql> insert into MYDB.BOOK (book_id, name) values ('0001', 'hoge1');

■ サンプルプログラム準備

サンプルプログラムのソースコード準備

$ git clone git@github.com:tomsato/doctrine_sample.git
$ cd doctrine_sample
$ composer install

アプリケーションからアクセスするユーザー名やパスワードについては以下のファイルを修正する

$ vim conf/slim/dependencies.php

ウェブサーバを起動

$ sudo php -S 0.0.0.0:80 -t public public/index.php

http://(サーバ名)/ にアクセスしてDBのデータを見れることを確認する

■ サンプルプログラム解説

ディレクトリ構成

// 必要なものを抜粋
$ tree
.
├── composer.json
├── conf
│   └── slim
│       ├── dependencies.php
│       ├── middleware.php
│       ├── routes.php
│       └── settings.php
├── public
│   └── index.php
├── src
│   ├── Controller
│   │   └── Index.php
│   └── Entity
│       └── Book.php
└── templates

dependencies.php

  • dependencies.phpにDoctrineのEntityManagerを登録する、DB接続情報もここで記述する
  • SlimでDIコンテナを利用できる
  •  DIコンテナ(依存性注入)の考え方
    • 依存性注入とは外部の環境などに依存する部分を切り離しソフトウェアの外部(つまりdependencies.php定義)から注入すること

Controller

  • Doctrineにはfinderメソッドというデータ検索のためのメソッドがある
  • findを使って主キーでレコードを検索している
  • サンプルプログラムではfindした結果をvar_dumpによって画面出力をしている

Entity

  • Entityはテーブルの個々のレコードを意味している
  • Book.phpで変数とDBテーブルをマッピングしている

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です