このWikiに書かれた情報は、Risoluto1.x系に関するものです。 Risoluto1.x系は開発が終了しており、現在Risoluto2.x系の開発が進められています。
risoluto (1.3.1) | 2011-09-27 15:41 |
risoluto-upgrade (1.3.0 to 1.3.1) | 2011-10-24 15:51 |
simpleblog (1.4.0) | 2011-10-19 14:50 |
simpleblog-upgrade (1.2.0 to 1.3.0) | 2011-07-21 23:13 |
simplepage (1.3.0) | 2011-10-19 14:45 |
simplepage-upgrade (1.1.0 to 1.2.0) | 2011-07-21 23:15 |
Step3までは単一画面でのチュートリアルでした。しかし、実際のWebアプリケーションでは1画面のみであることは皆無であり、複数画面で構成されていることでしょう。そこで、ちょっとRisolutoとは無関係*1になってしまいますが、複数画面で画面遷移を行ってみましょう。
では、実際のコードを見てみましょう。まずは最初の画面から見ていきます。これを「sample04_01.php」として保存してください*2。
- <?php
- require_once( 'Smarty.class.php' );
- class sample04_01
- {
- private $smarty;
- public function init()
- {
- $this->smarty = new Smarty;
- $this->smarty->template_dir = RISOLUTO_USERLAND . "samples";
- $this->smarty->config_dir = RISOLUTO_USERLAND . "samples";
- $this->smarty->compile_dir = RISOLUTO_CACHE;
- $this->smarty->cache_dir = RISOLUTO_CACHE;
- $this->smarty->caching = false;
- $this->smarty->debugging = false;
- $this->smarty->force_compile = true;
- $this->smarty->compile_check = true;
- }
- public function model()
- {
- }
- public function view()
- {
- $this->smarty->display( 'sample04_01.tpl' );
- }
- public function errHandler()
- {
- }
- public function clean()
- {
- unset( $this->smarty );
- }
- }
- ?>
続いて最初の画面のテンプレートについても、実際のコードを見てみることにしましょう。こちらの方は、「sample04_01.tpl」として保存してください*3。
続いて遷移先画面のコードも見てみましょう。これを「sample04_02.php」として保存してください。
- <?php
- require_once( 'Smarty.class.php' );
- class sample04_02
- {
- private $smarty;
- public function init()
- {
- $this->smarty = new Smarty;
- $this->smarty->template_dir = RISOLUTO_USERLAND . "samples";
- $this->smarty->config_dir = RISOLUTO_USERLAND . "samples";
- $this->smarty->compile_dir = RISOLUTO_CACHE;
- $this->smarty->cache_dir = RISOLUTO_CACHE;
- $this->smarty->caching = false;
- $this->smarty->debugging = false;
- $this->smarty->force_compile = true;
- $this->smarty->compile_check = true;
- }
- public function model()
- {
- }
- public function view()
- {
- $this->smarty->display( 'sample04_02.tpl' );
- }
- public function errHandler()
- {
- }
- public function clean()
- {
- unset( $this->smarty );
- }
- }
- ?>
続いて最初の画面のテンプレートについても、実際のコードを見てみることにしましょう。こちらの方は、「sample04_02.tpl」として保存してください。
さて、これらのファイルをアップロードし、最初の画面にWebブラウザからアクセスすると、次画面へのリンクが表示されるはずです。そのリンクを押下すると、2画面目に遷移するのが確認できます。
さて、画面遷移ができたところでちょっと考えてみましょう。テンプレート側はともかくとして、PHP側のコードを見てください。2つのPHPファイルに同じ内容が書かれてしまっていることにお気づきでしょうか。Smartyのクラスインスタンス作成やプロパティのセット、クラス変数の初期化などは全画面で共通の処理ですね。
2画面程度であればこれでも良いのですが、ちょっと凝ったアプリケーションを作ろうとすると、画面数だけでもそれなりの量になります。できれば、同じようなコードは何度も書きたくないと思うのが人情でしょう*4。
Risolutoでは、このような場合は「Base」を使うことを推奨しています。今回のサンプルで、Baseを使った例を下記に示します。
はじめに、下記の内容を「samples_base.inc」として保存してください*5。
- <?php
- require_once( 'Smarty.class.php' );
- abstract class samples_base
- {
- protected $smarty;
- abstract function model();
- abstract function view();
- public function __construct()
- {
- }
- public function __clone()
- {
- }
- public function init()
- {
- $this->smarty = new Smarty;
- $this->smarty->template_dir = RISOLUTO_USERLAND . "samples";
- $this->smarty->config_dir = RISOLUTO_USERLAND . "samples";
- $this->smarty->compile_dir = RISOLUTO_CACHE;
- $this->smarty->cache_dir = RISOLUTO_CACHE;
- $this->smarty->caching = false;
- $this->smarty->debugging = false;
- $this->smarty->force_compile = true;
- $this->smarty->compile_check = true;
- }
- public function errHandler()
- {
- }
- public function clean()
- {
- unset( $this->smarty );
- }
- }
- ?>
続いて、「sample04_01.php」と「sample04_02.php」を、それぞれ下記のように変更します。
変更したら、これらのファイルをアップロードし、Webブラウザからアクセスしてみると変更前と同一の結果となるはずです。
変更前と変更後でコードを見比べてみると、「sample04_01.php」と「sample04_02.php」のコードがすっきりしている事が分かるかと思います。このように、同一Cage内で共通の処理がある場合は、Baseを作成してその中にすべて押し込んでしまうと楽になります。
もし、特定画面でBaseに書いた処理とは別な事をしたくなった場合は、Logic*6でメソッドをオーバーライドすることで対応可能です*7。
[PageInfo]
LastUpdate: 2009-04-06 11:48:21, ModifiedBy: yuta_hayakawa
[License]
Creative Commons 2.1 Attribution-ShareAlike
[Permissions]
view:all, edit:members, delete/config:members