Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2017年10月25日に更新

CakePHP+Oracleでデータを取り出し表示するまで

このページでやること

前回は CakePHP v2 から Oracle 11g XE に接続するところまですすめました。

今回は連載の中で作成した、テーブル「t4characters」(table for charactersの略)から値を取り出して、ブラウザ上で表示するまでの内部の流れをお話します。

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

サンプルプログラムと役割

大規模なWebアプリ開発でよくサーバ側アプりで使われる考え方(=アーキテクチャ)として、MVC フレームワークという考え方があります。

今回は MVC フレームワークの中身についてお話することはしないのですが、MVC フレームワークの考えに沿った形でサンプルプログラムを作成していきます。

作る PHP ファイル

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

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

ご参考程度ですが、 MVC フレームワークにあてはめるとそれぞれ、 上の各項目はそれぞれ以下のように相当します。

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

実際に作ってみる

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

Controller の作成

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

/app/Controller/TestpageController.php を作成します。

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 を作成します。

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 を作成しましょう。

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

Layout の作成

次に Layout を作成します。こちらもとりあえずなもの。 画面表示するときのテンプレート(ひな形)です。

ファイルは /app/View/Layouts/testpage.ctp として新規作成。

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 を作成します。

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

おつかれさまでした。

作成したアプリへのアクセス

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

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

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

このとおり!無事に表示されました。

連載記事のまとめ

当連載記事を通して、Webサーバ、PHPプログラム実行、データベース連携の基本的な Web アプリケーションの流れを理解する助けとなれば、筆者の私もとても嬉しいです。

2021年1月追記

2021年1月現在、CakePHP のバージョン、PHPバージョン、Oracleバージョンもメジャーバージョンが新しくなりましたが、サーバプログラミングの基本的な動きは今も変わらないので、覚えた内容は役立つはず。役立つといいな。

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

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

ページの更新履歴

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

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(5件)です!

Apache、PHP、Oracle DBを連携させる手順

#開発環境#PHP#OracleDB#Apache✎ 2018-10-04
Apache、PHP、Oracle DB がそれぞれ連携して動くように設定する手順をまとめてます。テスト用に hosts の書き換えも実施。
広告領域
追従 広告領域
目次
CakePHP+Oracleでデータを取り出し表示するまで
CakePHP+Oracleでデータを取り出し表示するまで
このページでやること
このページでやること
サンプルプログラムと役割
サンプルプログラムと役割
作る PHP ファイル
作る PHP ファイル
実際に作ってみる
実際に作ってみる
Controller の作成
Controller の作成
Manager の作成
Manager の作成
Model の作成
Model の作成
Layout の作成
Layout の作成
View の作成
View の作成
作成したアプリへのアクセス
作成したアプリへのアクセス
連載記事のまとめ
連載記事のまとめ
2021年1月追記
2021年1月追記
Webアプリの開発環境をイチから作成シリーズ記事
Webアプリの開発環境をイチから作成シリーズ記事
ページの更新履歴
ページの更新履歴
Nodachisoft © 2020