前回は CakePHP v2 から Oracle 11g XE に接続するところまですすめました。
今回は連載の中で作成した、テーブル「t4characters」(table for charactersの略)から値を取り出して、ブラウザ上で表示するまでの内部の流れをお話します。
※CakePHP v2 フレームワークの構造上もっとよい書き方はあるかと思います。そんなご指摘ありましたら、ぜひコメントにて教えていただければと思います。
大規模なWebアプリ開発でよくサーバ側アプりで使われる考え方(=アーキテクチャ)として、MVC フレームワークという考え方があります。
今回は MVC フレームワークの中身についてお話することはしないのですが、MVC フレームワークの考えに沿った形でサンプルプログラムを作成していきます。
今回は大きく分けて、以下の役割をもつ PHP ファイルを作成します。
ご参考程度ですが、 MVC フレームワークにあてはめるとそれぞれ、 上の各項目はそれぞれ以下のように相当します。
難しいことはさておき、実際に作っていこうと思います。
まずは 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 を作成します。この中でデータ操作関連をまとめます。
/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 を作成します。形だけで中身は適当です。 これでもとりあえず動きます。
ファイルとして /app/Model/T4characters.php
を作成しましょう。
<?php
class T4characters extends AppModel {
var $name = 'T4characters';
var $validate = array();
}
次に 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 を作成します。
<?php
echo "name=".$entity['name']."<br />";
echo "hp=".$entity['hp']."<br />";
おつかれさまでした。
これで一通り作成完了。ブラウザからアクセスすると・・
Oracleからデータ取得した画面
このとおり!無事に表示されました。
当連載記事を通して、Webサーバ、PHPプログラム実行、データベース連携の基本的な Web アプリケーションの流れを理解する助けとなれば、筆者の私もとても嬉しいです。
2021年1月現在、CakePHP のバージョン、PHPバージョン、Oracleバージョンもメジャーバージョンが新しくなりましたが、サーバプログラミングの基本的な動きは今も変わらないので、覚えた内容は役立つはず。役立つといいな。
更新日 | 更新内容 |
---|---|
2013.10.25 | ページ公開 |
2018.3.17 | スマホからレイアウトが崩れて読みにくいので修正。ついでに文章構造もHTML5用に訂正。 |
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: