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

Published: 2017年1月3日 by tomsato

概要

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テーブルをマッピングしている

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧