このチュートリアルでは、ログを出力する方法についてご説明したいと思います。
こちらもさほど難しい話ではありませんので、実際のコードを見てみましょう。Step5で作成した「samples_base.inc」を下記のように修正してください。この手順を行うことによって、このsamples_baseクラスを継承したすべてのLogicでログ出力を行うことができるようになります。
<?php
require_once( 'Smarty.class.php' );
require_once( RISOLUTO_FUNC . 'risoluto_conf.php' );
require_once( RISOLUTO_FUNC . 'risoluto_log.php' );
abstract class samples_base
{
protected $smarty;
protected $obj_conf;
protected $obj_log;
abstract function model();
abstract function view();
public function __construct()
{
}
public function __clone()
{
}
public function init()
{
$this->obj_conf = new RisolutoConf();
$this->obj_conf->parse( RISOLUTO_CONF . 'risoluto.ini' );
$this->obj_log = RisolutoLog::singleton();
$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 );
unset( $this->obj_conf );
unset( $this->obj_log );
}
}
?>
追加したものについて、簡単にご説明したいとおもいます。
まず、「require_once( RISOLUTO_FUNC . 'risoluto_log.php' );」が追加されました。Risolutoが標準で用意しているログ出力用クラスを読み込みます。
「protected $obj_log;」という1行も追加されています。これはログ出力用クラスのインスタンスを保持するためのクラス変数です。名称は任意ですが慣例としてこの名称にしておくことが推奨されています。
「$this->obj_log = RisolutoLog::singleton();」がinit()メソッドに追加されていることにお気づきでしょうか。ここでクラスインスタンスの生成を行っています。
clean()メソッドに「unset( $this->obj_log );」が追加されているのも確認いただけるかと思います。
これらを各Logicに組み込んでも構いません*1が、一般にBaseに記述する方がよいでしょう。
それでは、Logicの方の処理を見てみましょう。下記のコードを「sample06.php」として保存してください。
<?php
require_once( 'samples_base.inc' );
class sample06 extends samples_base
{
public function model()
{
$this->obj_log->logging( 'debug', 'model() method was called.' );
}
public function view()
{
$this->obj_log->logging( 'debug', 'view() method was called.' );
$this->smarty->display( 'sample06.tpl' );
}
}
?>
model()メソッドとview()メソッドの両方に「$this->obj_log->logging(~);」という1行が記載されています。この1行を記述することで、ログを出力することが可能となります。
Design側のコードもここで提示させていただきます。下記のコードを「sample06.tpl」として保存してください。
<HTML> <HEAD> <TITLE>sample06</TITLE> </HEAD> <BODY> ログファイルに出力されていることを確認してください。 </BODY> </HTML>
これらのファイルをアップロードし、最初の画面にWebブラウザからアクセスすると、ログファイルに2行分出力されているはずです。例えば、下記のように出力されます*2。
[ debug at YYYY/MM/DD HH:mm:dd(JST)] model() method was called. [ debug at YYYY/MM/DD HH:mm:dd(JST)] view() method was called.
このように、簡単にログ出力を行うことが可能です。ログ出力用クラスについて詳しく知りたい場合は、RisolutoLogクラス(risoluto_log.php)を参照してください。