Location: PHPKode > projects > Runemaster > docs/template.variable.evaluation.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3.3. 条件判定 (if)</title>
<link rel="stylesheet" href="style.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="index.html" title="Runemaster マニュアル">
<link rel="up" href="variable.html" title="第3章 テンプレート変数">
<link rel="prev" href="template.foreach.html" title="3.2. 繰り返し処理 (foreach)">
<link rel="next" href="form.html" title="第4章 フォーム">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">3.3. 条件判定 (if)</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="template.foreach.html">前のページ</a> </td>
<th width="60%" align="center">第3章 テンプレート変数</th>
<td width="20%" align="right"> <a accesskey="n" href="form.html">次のページ</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" lang="ja">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="template.variable.evaluation"></a>3.3. 条件判定 (if)</h2></div></div></div>
<div class="section" lang="ja">
<div class="titlepage"><div><div><h3 class="title">
<a name="if.variable.evaluation"></a>3.3.1. 評価による表示/非表示切り替え</h3></div></div></div>
<p>
      「if」属性を利用すれば、テンプレート変数の値を利用して評価を行い、
      その結果に応じて情報の表示、非表示を切り替えることができます。
    </p>
<div class="example">
<a name="id343170"></a><p class="title"><b>例 3.12. if 属性による表示、非表示処理</b></p>
<div class="example-contents"><div class="variablelist"><dl>
<dt><span class="term">テンプレート</span></dt>
<dd><pre class="programlisting">
&lt;div if="staff"&gt;私は&lt;span key="staff"&gt;杖&lt;/span&gt;を持っています。&lt;/div&gt;
&lt;div if="book"&gt;私は&lt;span key="book"&gt;本&lt;/span&gt;を持っています。&lt;/div&gt;</pre></dd>
<dt><span class="term">PHPコード</span></dt>
<dd><pre class="programlisting">
$master = new Rune_Master('/path/to/templateDirectory');

$variable = new stdClass();
$variable-&gt;book = 'Runemaster マニュアル';
$master-&gt;assign($variable);
$master-&gt;cast('example');</pre></dd>
<dt><span class="term">実行結果</span></dt>
<dd><pre class="programlisting">

&lt;div if="book"&gt;私は&lt;span key="book"&gt;Runemaster マニュアル&lt;/span&gt;を持っています。&lt;/div&gt;</pre></dd>
</dl></div></div>
</div>
<br class="example-break"><p>
      この例では、テンプレート上の &lt;div&gt; タグに if 属性の値として
      staff, book をセットしています。
      一方プログラムによるテンプレート変数の割り当てが
      book のみであり、staff には行われていません。
      この状態で描写を試みると、if 属性によって staff, book の値が評価され、
      変数割り当てが行われている book 側の内容は表示されるのに対し、
      割り当てが行われていない staff 側の内容は表示されなくなります。
    </p>
</div>
<div class="section" lang="ja">
<div class="titlepage"><div><div><h3 class="title">
<a name="evaluation.by.expression"></a>3.3.2. 評価式による判定</h3></div></div></div>
<p>
      表示、非表示の判定は、
      値そのもの評価だけでなく「評価式」によっての判定も可能です。
    </p>
<div class="example">
<a name="id342931"></a><p class="title"><b>例 3.13. 評価式による判定</b></p>
<div class="example-contents"><pre class="programlisting">
&lt;span if="class === 'Runemaster'"&gt;Hi, Runemaster!&lt;/span&gt;
&lt;span if="count(items) &gt; 10"&gt;A lot items.&lt;/span&gt;
&lt;span if="book &amp;&amp; stone"&gt;do cast spell.&lt;/span&gt;</pre></div>
</div>
<br class="example-break"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">注意</h3>
<p>
        残念ながら、if 属性の値として利用できる評価式については、
        複数条件を多段で繋げる (括弧による評価を積み重ねるような)
        複雑な評価を行うことはできません。
        複数条件による総合評価によって表示是非を切り替えたい場合は、
        予め PHP プログラムによる評価値をテンプレート変数に代入しておくか、
        評価を行うための専用のクラスメソッドを作成し、引数として値を代入して評価を行うようにしましょう。
        (その方がテンプレートデータの可読性にも繋がります。)
      </p>
</div>
</div>
<div class="section" lang="ja">
<div class="titlepage"><div><div><h3 class="title">
<a name="reversal.evaluation"></a>3.3.3. 評価値の反転</h3></div></div></div>
<p>
      評価対象となる変数値、もしくは評価式の先頭に「!」感嘆符
      (エクスクラメーションマーク、ビックリマーク) を付与することで、
      評価結果の反転をさせ、その結果を利用することができます。
    </p>
<div class="example">
<a name="id342974"></a><p class="title"><b>例 3.14. 評価値の反転</b></p>
<div class="example-contents">
<p>
        変数 foo = 1, bar = 0 の場合。
      </p>
<pre class="programlisting">
&lt;span if="foo"&gt;foo は掲載される&lt;/span&gt; 
&lt;span if="!foo"&gt;!foo は掲載されない&lt;/span&gt;

&lt;span if="foo &amp;&amp; foo"&gt;foo &amp;&amp; foo は掲載される&lt;/span&gt;
&lt;span if="foo &amp;&amp; !foo"&gt;foo &amp;&amp; !foo は掲載されない&lt;/span&gt;
&lt;span if="!foo &amp;&amp; foo"&gt;!foo &amp;&amp; foo は掲載されない&lt;/span&gt;

&lt;span if="foo &amp;&amp; bar"&gt;foo &amp;&amp; bar は掲載されない&lt;/span&gt;
&lt;span if="foo &amp;&amp; !bar"&gt;foo &amp;&amp; !bar は掲載される&lt;/span&gt;</pre>
</div>
</div>
<br class="example-break">
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="template.foreach.html">前のページ</a> </td>
<td width="20%" align="center"><a accesskey="u" href="variable.html">上に戻る</a></td>
<td width="40%" align="right"> <a accesskey="n" href="form.html">次のページ</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">3.2. 繰り返し処理 (foreach) </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">ホーム</a></td>
<td width="40%" align="right" valign="top"> 第4章 フォーム</td>
</tr>
</table>
</div>
</body>
</html>
Return current item: Runemaster