【Webアプリ】開発環境をイチから作成・その9(CakePHP + Oracle連携)

Web開発環境構築のアイキャッチ画像

このページでの目標

前回は CakePHP から Oracle に接続するところまでやりました。
今回は以前作成した、テーブル「t4characters」(table for charactersの略)から値を取り出して、ブラウザ上で表示するまでの流れをお話します。

※CakePHPフレームワークの構造上もっとよい書き方はあるかと思います。そんなご指摘ありましたら、ぜひコメントにて教えていただければと思います。

作るプログラムと役割

作る PHP ファイル

今回は大きく分けて、以下の PHP ファイルを作成します。

  1. Controller(業務ロジックの流れを制御)
  2. DBのテーブルから情報を取得するManager(Controllerから再利用可能な、Componentの一つとして実装)
  3. Model(t4charactersと紐づく、Entity として作成。DBレコード相当のデータを保持)
  4. Layout(画面出力時のレイアウトを担当)
  5. View(画面出力を担当)

フレームワークの MVC 構造にあてはめると

Framework の MVC 構造でいうと、上の各項目はそれぞれ以下のように相当します。

  • Model は2番、3番
  • View は4番、5番
  • Controller は1番

実際に作ってみる

難しいことはさておき、実際に作っていこうと思います。

Controller の作成

まずは Controller から。どんなことをサーバ側で処理して結果を返すかの流れを制御します。
/app/Controller/TestpageController.php を作成します。

<?php
class TestpageController extends AppController {
  public $name = "Testpage";
  public $uses = null;
  public $autoRender = true;
  public $autoLayout = true;
  public $layout="testpage";
  var $components = array('T4charactersMgr');
  function index() {
    $entity = $this->T4charactersMgr->getEntityById(2);
    $this->set('entity' , $entity);
  }
}

Manager の作成

次に、Manager を作成します。この中でデータ操作関連をまとめます。
/app/Controller/Component/T4charactersMgrComponent.php を作成します。

<?php
class T4charactersMgrComponent extends Object {
  var $name = "T4charactersMgr";
  function startup($controller){
    $this->controller = $controller;
  }
  function initialize(){}
  function getEntityById( $id ) {
    App::import('Model','T4characters');
    $dbo_T4characters = new T4characters();
    $entity = $dbo_T4characters->find(
       'first'
      ,array('conditions'=>array('id' => $id)));
    return $entity['T4characters'];
  }
}

Model の作成

次にModel を作成します。形だけで中身は適当です。
/app/Model/T4characters.php

<?php
class T4characters extends AppModel {
  var $name = 'T4characters';
  var $validate = array();
}

Layout の作成

次に Layout を作成します。こちらもとりあえずなもの。
app/View/Layouts/testpage.ctp

<!DOCTYPE html>
<html lang=ja>
<head><title>CakePHP テストページ</title></head>
<body><h1>ヘッダー</h1><hr />
<?php echo $content_for_layout; ?>
<hr /><h1>フッター</h1></body>
</html>

View の作成

最後に View を作成します。

<?php
echo "name=".$entity['name']."<br />";
echo "hp=".$entity['hp']."<br />";

完成!

これで一通り作成完了。ブラウザからアクセスすると・・

CakePHP で Oracle からデータ取得して表示をしたブラウザ画面結果

Oracleからデータ取得した画面

このとおり!無事に表示されました。
とりあえずCakePHP + Oracle 連携についてのシリーズはここまでです。

Webアプリの開発環境をイチから作成シリーズ記事

  1. その1(Eclipse&Java SDK7 導入)
  2. その2(Eclipse の Plugin 導入)
  3. その3(Oracle DB 11g XE R2 インストール)
  4. その4(Oracle DB 11g XE R2 疎通確認)
  5. その5(XAMPP インストール)
  6. その6(Apache + PHP + Eclipse連携)
  7. その7(Apache + PHP + Oracle連携)
  8. その8(CakePHP + Oracle連携)
  9. その9(CakePHP + Oracle連携) ←いまココ

ページの更新履歴

更新日 更新内容
2013.10.25 ページ公開
2018.3.17 スマホからレイアウトが崩れて読みにくいので修正。ついでに文章構造もHTML5用に訂正。