概要
Doctrineを使ってPHPからデータベースを操作する
DoctrineとはORMツールで、ORMとはオブジェクト関係マッピング(Object relational mapping)というDBのデータとPHPのクラスをマッピングして変換する技法である
今回はPHPのマイクロフレームワークであるSlimの中でDoctrineを使ったDB操作サンプルプログラムを試す
環境準備
PHP/MySQL環境の作成方法は別ページにまとめたのでそれを使って準備する
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テーブルをマッピングしている
コメントを書く
コメント一覧