読者です 読者をやめる 読者になる 読者になる

奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

第4回ソーシャルラーニング勉強会の説明用ソースコード

Part1:



a.php


<?php

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('Smarty.class.php');
$smarty = new Smarty();

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price1 += $price1 * 0.05;

// 何か色々やる

// 消費税を計算して加算する
$price1 += $price1 * 0.05;

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += $price2 * 0.05;

// 何か色々やる

// 消費税を計算して加算する
$price2 += $price2 * 0.05;

$smarty->assign('price1', $price1);
$smarty->assign('price2', $price2);

//---------
// 終了処理
//---------
// 画面の表示とか
$output_html = $smarty->fetch('テンプレートファイル名');
echo $output_html;



Part2:



a.php


<?php

// 手数料を計算する
function calc_commission($price)
{
// 振込手数料の様に減算する可能性もあるので、ここでは加算はしない
// 原則として、一つの関数内では、沢山処理をしない方が良い
// でも、振込手数料なら率が別になる可能性もあるので、書いちゃっても良いか?
return $price * 0.05;
}

// 消費税を計算する
function calc_payment_tax($price)
{
// こっちは同時に加算しちゃっても良いかも
return $price * 0.05;
}

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('Smarty.class.php');
$smarty = new Smarty();

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price1 += calc_commission($price1);

// 何か色々やる

// 消費税を計算して加算する
// こっちは同じ関数に入れちゃダメ!
// 5%になっているのはたまたまなっているだけで、手数料率が変わったら消費税率も変わる保証はないので
// コメント書いているから気付きやすいけど、書いてなかったらやりそう
$price1 += calc_payment_tax($price1);

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += calc_commission($price2);

// 何か色々やる

// 消費税を計算して加算する
$price2 += calc_payment_tax($price2);

$smarty->assign('price1', $price1);
$smarty->assign('price2', $price2);

//---------
// 終了処理
//---------
// 画面の表示とか
$output_html = $smarty->fetch('テンプレートファイル名');
echo $output_html;



Part3:



a.php


<?php

// 手数料を計算する
function calc_commission($price)
{
// 振込手数料の様に減算する可能性もあるので、ここでは加算はしない
// 原則として、一つの関数内では、沢山処理をしない方が良い
// でも、振込手数料なら率が別になる可能性もあるので、書いちゃっても良いか?
return $price * 0.05;
}

// 消費税を計算する
function calc_payment_tax($price)
{
// こっちは同時に加算しちゃっても良いかも
return $price * 0.05;
}

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('initialize.php');

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price1 += calc_commission($price1);

// 何か色々やる

// 消費税を計算して加算する
// こっちは同じ関数に入れちゃダメ!
// 5%になっているのはたまたまなっているだけで、手数料率が変わったら消費税率も変わる保証はない
// コメント書いているから気付きやすいけど、書いてなかったらやりそう
$price1 += calc_payment_tax($price1);

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += calc_commission($price2);

// 何か色々やる

// 消費税を計算して加算する
$price2 += calc_payment_tax($price2);

$smarty->assign('price1', $price1);
$smarty->assign('price2', $price2);

//---------
// 終了処理
//---------
// 画面の表示とか
require_once('finalize.php');
show_html($smarty, 'テンプレートファイル名');



b.php


<?php

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('initialize.php');

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか

// 画面が違うので、さっきとは違う事をやっている

//---------
// 終了処理
//---------
// 画面の表示とか
require_once('finalize.php');
show_html($smarty, 'テンプレートファイル名');



initialize.php


<?php

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('Smarty.class.php');
$smarty = new Smarty();



finalize.php


<?php

// 画面を表示する
function show_html($smarty, $template_file_name)
{
$output_html = $smarty->fetch($template_file_name);
echo $output_html;
}



Part4:



a.php


<?php

// 手数料を計算する
/*function calc_commission($price)
{
// 振込手数料の様に減算する可能性もあるので、ここでは加算はしない
// 原則として、一つの関数内では、沢山処理をしない方が良い
// でも、振込手数料なら率が別になる可能性もあるので、書いちゃっても良いか?
return $price * 0.05;
}*/

// 消費税を計算する
/*function calc_payment_tax($price)
{
// こっちは同時に加算しちゃっても良いかも
return $price * 0.05;
}*/

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('initialize.php');

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
require_once('utility.php');
$price1 += utility::calc_commission($price1);

// 何か色々やる

// 消費税を計算して加算する
// こっちは同じ関数に入れちゃダメ!
// 5%になっているのはたまたまなっているだけで、手数料率が変わったら消費税率も変わる保証はない
// コメント書いているから気付きやすいけど、書いてなかったらやりそう
$price1 += utility::calc_payment_tax($price1);

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += utility::calc_commission($price2);

// 何か色々やる

// 消費税を計算して加算する
$price2 += utility::calc_payment_tax($price2);

$smarty->assign('price1', $price1);
$smarty->assign('price2', $price2);

//---------
// 終了処理
//---------
// 画面の表示とか
require_once('finalize.php');
show_html($smarty, 'テンプレートファイル名');



b.php


<?php

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('initialize.php');

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか

// 画面が違うので、さっきとは違う事をやっている

//---------
// 終了処理
//---------
// 画面の表示とか
require_once('finalize.php');
show_html($smarty, 'テンプレートファイル名');



c.php


<?php

//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('initialize.php');

//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
require_once('utility.php');
$price1 += utility::calc_commission($price1);

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += utility::calc_commission($price2);

// 何か色々やる

$smarty->assign('price1', $price1);
$smarty->assign('price2', $price2);

//---------
// 終了処理
//---------
// 画面の表示とか
require_once('finalize.php');
show_html($smarty, 'テンプレートファイル名');



utility.php


<?php

class utility
{
private function __construct()
{
}

// 手数料を計算する
static public function calc_commission($price)
{
// 振込手数料の様に減算する可能性もあるので、ここでは加算はしない
// 原則として、一つの関数内では、沢山処理をしない方が良い
// でも、振込手数料なら率が別になる可能性もあるので、書いちゃっても良いか?
return $price * 0.05;
}

// 消費税を計算する
static public function calc_payment_tax($price)
{
// こっちは同時に加算しちゃっても良いかも
return $price * 0.05;
}
}



Part5:



controller.php


<?php

class controller
{
public function execute()
{
//---------
// 初期処理
//---------
// Smartyインスタンス生成とか、date_default_timezone_setとか、DB接続とか
require_once('initialize.php');
require_once('utility.php');

// リクエストパラメータからクラスインスタンスを生成する
// 例:<form action="controller.php?p=a" method="post">

// 実際には、リクエストパラメータ値をチェックしてから、requireすべし
// require_once('/etc/passwd')とか(ディレクトリ・トラバーサル)にならない様に
// 設定ファイルにクラス名の一覧を書いておいて、その中にリクエストパラメータ値が存在するかどうかをチェックするのが良いと思う
$p = $_GET['p'];
require_once($p);
$obj = new $p;
// 引数の$smartyは、上記のinitialize.php内にある変数
$obj->set_smarty($smarty);
//---------------
// メイン処理実行
//---------------
$obj->execute();

//---------
// 終了処理
//---------
// 画面の表示とか
require_once('view.php');
$view = new view();
// 引数の$smartyは、上記のinitialize.php内にある変数
$view->set_smarty($smarty);
$view->show_html('テンプレートファイル名');
}
}

$controller = new controller();
$controller->execute();



model.php


<?php

class model
{
public function __construct()
{
$this->init();
}

public function init()
{
$this->set_smarty(null);
}

public function set_smarty($smarty)
{
$this->smarty = $smarty;
}

public function get_smarty()
{
return $this->smarty;
}

// メイン処理実行
public function execute()
{
}

// Smartyインスタンス
private $smarty;
}



a.php


<?php

class a extends model
{
// 処理実行
public function execute()
{
//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
//require_once('utility.php');
$price1 += utility::calc_commission($price1);

// 何か色々やる

// 消費税を計算して加算する
// こっちは同じ関数に入れちゃダメ!
// 5%になっているのはたまたまなっているだけで、手数料率が変わったら消費税率も変わる保証はない
// コメント書いているから気付きやすいけど、書いてなかったらやりそう
$price1 += utility::calc_payment_tax($price1);

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += utility::calc_commission($price2);

// 何か色々やる

// 消費税を計算して加算する
$price2 += utility::calc_payment_tax($price2);

$this->get_smarty()->assign('price1', $price1);
$this->get_smarty()->assign('price2', $price2);
}
}



b.php


<?php

class b extends model
{
public function execute()
{
//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか

// 画面が違うので、さっきとは違う事をやっている
}
}



c.php


<?php

class c extends model
{
public function execute()
{
//-----------
// メイン処理
//-----------
// SQL投げてデータ取ってきて設定するとか、メール送信するとか
$price1 = 100;
$price2 = 200;

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
//require_once('utility.php');
$price1 += utility::calc_commission($price1);

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 何か色々やる

// 手数料を計算して加算する
$price2 += utility::calc_commission($price2);

// 何か色々やる

$this->get_smarty()->assign('price1', $price1);
$this->get_smarty()->assign('price2', $price2);
}
}



view.php


<?php

class view
{
public function __construct()
{
$this->init();
}

public function init()
{
$this->set_smarty(null);
}

public function set_smarty($smarty)
{
$this->smarty = $smarty;
}

public function get_smarty()
{
return $this->smarty;
}

// 画面を表示する
public function show_html($template_file_name)
{
// HTMLの文字列を取得する
$output_html = $this->get_smarty()->fetch($template_file_name);

// 画面を表示する
echo $output_html;
}

private $smarty;
}



参考資料:
http://www.m-fr.net/PESEF/on_the_way/