Smarty を使った開発でデバッグを行う 4 つの方法

  PHP のテンプレートエンジン Smarty を使って開発するときに,割り当てた変数が複雑になって困ることはありませんか?
  その際,何らかの方法を使って割り当てた変数を確認するのですが,いくつか方法があります.

1. 常にデバッギングコンソールを表示する方法


  おそらく一番有名な方法ですが,$debugging に true を指定して,常にデバッギングコンソールを表示する方法です.

require_once 'Smarty.class.php';

$smarty = new Smarty;
$smarty->debugging = true;


  これで,常にデバッギングコンソールが表示されます.

  デバッギングコンソールは,window.open() を使った JavaScript によるポップアップウィンドウですが,以下のように _smarty_debug_output に html を割り当てることで,ドキュメント中に埋め込むことができます.

require_once 'Smarty.class.php';

$smarty = new Smarty;
$smarty->debugging = true;
$smarty->assign('_smarty_debug_output', 'html'); // 'html' を '' にするとポップアップ


- ref.: $debugging
  http://smarty.php.net/manual/en/variable.debugging.php

2. URL に SMARTY_DEBUG が含まれる場合にデバッギングコンソールを表示する方法


  $debugging_ctrl に 'URL' を指定して,URL に QUERY_STRING が含まれる場合にデバッギングコンソールを表示する方法です.

require_once 'Smarty.class.php';

$smarty = new Smarty;
$smarty->debugging_ctrl = 'URL'; // 解除は 'NONE'


  このように設定して,

http://example.com/foo.php?bar=baz

  という URL の場合には,

http://example.com/foo.php?bar=baz&SMARTY_DEBUG

  このようにすれば,デバッギングコンソールが表示されます.
  ちなみに,SMARTY_DEBUG=off の場合は,デバッギングコンソールは表示されません.

  $debugging = true の場合は,この設定は無視されます.

- ref.: $debugging_ctrl
  http://smarty.php.net/manual/en/variable.debugging.ctrl.php

3. テンプレート変数 debug を利用してデバッギングコンソールを表示する方法


  デバッギングコンソールはテンプレート変数を使っても表示することができます.

{debug}


  たったこれだけです.$debugging や $debugging_ctrl の設定にかかわらず表示されます.
  ポップアップ式ではないデバッギングコンソールをドキュメントに埋め込むには以下のようにします.

{debug output='html'}


- ref.: {debug}
  http://smarty.php.net/manual/en/language.function.debug.php

4. debug_print_var 修正子を利用して,割り当てられた変数を表示する方法


  この方法はドキュメントに載っていないのですが,上記 3 つのデバッギングコンソールを表示する方法とは異なり,1 つの変数の内容を表示するものです.

$foo = array(
    'a' => '',
    'b' => '',
    'c'=> array(
        'd' => ''
    )
);

$smarty->assing('foo', $foo);


  上記のように,配列が割り当てられた場合は,

{$foo|@debug_print_var} {* $foo は配列なので @ が必要 *}


  このようにすることで,以下のように $foo の内容だけが出力されます.

Array (3)
a => あ
b => い
c => Array (1)
 d => う

  debug_print_var はプラグインとして含まれてますが,ドキュメントには載っていません.
  しかし,デフォルトのデバッギングコンソール用のテンプレート debug.tpl で使われています.

  debug_print_var はデフォルトでは 40 文字で表示が切られてしまいます.これはオプションで調節できます.
  例えば 100 文字まで表示する場合は,以下のように指定してあげれば OK です.

{$foo|@debug_print_var:0:100}


  100 の前のオプションの 0 は,配列やオブジェクトを表示する際のインデント幅です.


- おまけ
  Smarty のテンプレート内で JavaScript を書く場合 { } がテンプレート変数として扱われるので {literal} で囲むのが面倒だとか,JavaScript の中にテンプレート変数を割り当てられないだとか耳にすることがあります.

  この場合は,テンプレート変数の { } を変更すればいいです.

require_once 'Smarty.class.php';

$smarty = new Smarty;
$smarty->left_delimiter  = '<{';
$smarty->right_delimiter = '}>';


  上記の設定は XOOPS が使っているもので,テンプレート変数は以下のよう記述します.

<{$foo}>


  これを使うと,以下のように JavaScript を場合に {literal} で囲む必要もありませんし,JavaScript の中にテンプレート変数を割り当てることもできます.

<script type="text/javascript">
function foo() {
    var a = '<{$foo|escape:"javascript"}>';
};
</script>



- Smarty 入門 PHP5+テンプレート・エンジンでつくる MVC アプリケーション
  4798108839
  http://www.amazon.co.jp/o/ASIN/4798108839/todaysnonsenc-22/ref=nosim/
  山田 祥寛 (著)
  翔泳社
  ISBN: 4798108839
  2005/3/15
  2,940 円

実用SSH 第2版 ― セキュアシェル徹底活用ガイド

  4873112877
  http://www.amazon.co.jp/o/ASIN/4873112877/todaysnonsenc-22/ref=nosim/
  Daniel J. Barrett (著), Richard E. Silverman (著), Robert G. Byrnes (著),
  小島 肇 (監修), 坂井 順行 (翻訳), 鹿田 幸治 (翻訳), 園田 道夫 (翻訳),
  高橋 基信 (翻訳), 根津 研介 (翻訳), 宮本 久仁男 (翻訳)
  オライリー・ジャパン
  ISBN: 4873112877
  2006/11/22
  5,040 円

- 目次
  http://www.oreilly.co.jp/books/4873112877/toc.html

- 「実用SSH 第2版 ― セキュアシェル徹底活用ガイド」サポートページ
  http://www.st.ryukoku.ac.jp/~kjm/security/sshbook/

ユーザ中心ウェブサイト戦略 仮説検証アプローチによるユーザビリティサイエンスの実践

  4797333529
  http://www.amazon.co.jp/o/ASIN/4797333529/todaysnonsenc-22/ref=nosim/
  株式会社ビービット 武井 由紀子 (著), 遠藤 直紀 (著)
  ソフトバンククリエイティブ
  ISBN: 4797333529
  2006/9/27
  2,940 円

ユーザ行動特性に基づくウェブサイト設計法
ウェブビジネス成功のカギはユーザ行動特性の理解にある!
ユーザビリティテストで業界一の実績をもつコンサルタントが、戦略の立案から基本導線・詳細画面設計、
さらに効果検証まで、ユーザ中心設計に基づくウェブサイト戦略を徹底解説。ウェブマスター必読!

セオリー・オブ・スタイルシート

  4774127833
  http://www.amazon.co.jp/o/ASIN/4774127833/todaysnonsenc-22/ref=nosim/
  技術評論社編集部 (編集)
  技術評論社
  ISBN: 4774127833
  2006/5/19
  3,360 円

  スタイルシートの理論の部分を神崎正英氏が執筆とのことで,これは見なければ.

PHP の薬箱 エラー・トラブル回避のテクニックとセキュリティ対策

  486167140X
  http://www.amazon.co.jp/o/ASIN/486167140X/todaysnonsenc-22/ref=nosim/
  佐久嶋 ひろみ (著)
  九天社
  ISBN: 486167140X
  2006/11
  2,940 円

  Amazon には目次がないけど,出版社のサイトにでていました.

- PHP の薬箱
  http://www.9-ten.co.jp/bookdata/140X.php

  これをみると,Symfony や Zend Framework など最近の話題も扱っているようにみえます (どれくらいのボリュームかはまた別ですが).
  対象がいまいち分からなかったりもするのですが,逆引き用として使えるのかも.ちょっと気になる.

DVD 42 枚,テレビシリーズ全話を収録した LUPIN THE BOX - TV & The Movie -

  B000J4S522
  http://www.amazon.co.jp/o/ASIN/B000J4S522/todaysnonsenc-22/ref=nosim/
  ASIN: B000J4S522
  75,000 円

  これはすごい.値段もすごいけど.内容は以下のとおり.

  • 1stシリーズ (全23話)
  • 2ndシリーズ (全155話)
  • 3rdシリーズ (全50話)
  • 1978年「ルパン VS 複製人間」
  • 1979年「カリオストロの城」
  • 1985年「バビロンの黄金伝説」

  せっかくだったら,劇場版もテレビスペシャルも全部入れてくれたらよかったのに.
  そしたら,買ったかも.

2007 年版 図解革命!業界地図最新ダイジェスト

  4471666924
  http://www.amazon.co.jp/o/ASIN/4471666924/todaysnonsenc-22/ref=nosim/
  一橋総合研究所 (監修)
  高橋書店
  ISBN: 4471666924
  2006/8/26
  1,050 円

  色が綺麗で見やすかった.
  面白いのは大学業界というものもあって,経常収益 1,771 億円,総資産 1 兆 2,988 億円の東大がトップ.

ドラことば心に響くドラえもん名言集

  4093876754
  http://www.amazon.co.jp/o/ASIN/4093876754/todaysnonsenc-22/ref=nosim/
  小学館 ドラえもんルーム (編集)
  小学館
  ISBN: 4093876754
  2006/9/1
  1,260 円

下流喰い ― 消費者金融の実態

  4480063250
  http://www.amazon.co.jp/o/ASIN/4480063250/todaysnonsenc-22/ref=nosim/
  須田 慎一郎 (著)
  筑摩書房
  ISBN: 4480063250
  2006/09

  Fax 1 つで 5 万円貸して 1 週間後には利息が 3 万円付くとかが平気でまかり通るのが闇金の世界.

- via: たつをの ChangeLog
  http://nais.to/~yto/clog/2006-10-05-5.html

Web 2.0 ツールのつかいかた - まだ、Google だけですか?

  4774129089
  http://www.amazon.co.jp/o/ASIN/4774129089/todaysnonsenc-22/ref=nosim/
  野本 幹彦(著), 梅田 望夫(著), 小飼 弾(著)
  技術評論社
  ISBN: 4774129089
  2006/10/6
  1,344 円