TopMovable Type変数 > 2009年6月
2009年6月24日

Movable Type の変数の初期化に関するまとめ

June 24,2009 12:55 AM
Tag:[, ]
Permalink

Movable Type の変数の初期化について、「45式::雑記 - MTで変数の値を初期化する方法」に便乗して、まとめっぽくエントリーします。

1.変数を「0」で初期化する

変数を 0 で初期化する場合には value モディファイアの値に 0 を設定します。

<mt:SetVar name="foo" value="0" />

2.変数を空の文字列で初期化する

45式::雑記 - MTで変数の値を初期化する方法」で解説されている通りです。

主な初期化方法は次の2通りです。ひとつは value モディファイアの値を設定しません。

<mt:SetVar name="foo" value="" />

もうひとつは、value モディファイア自体を記述しません。

<mt:SetVar name="foo" />

単純な変数以外に、設定済みの配列変数やハッシュ変数も上記の方法で初期化できます。

3.変数を未定義にする

変数は MTSetVar タグで1項や2項のお作法で設定されていない限り、未定義の状態です。MTSetVar タグなどで一旦定義した変数を未定義にするには undef 関数を利用します。

<mt:SetVar name="undef(foo)" />

利用するケースは少ないと思いますが、未定義にすることで Perl の defined による判定が行なえます。Movable Type で defined を利用するには、test モディファイアを使用します。

変数の定義・未定義のチェックは、下記のサブテンプレートでお試しください。

a.変数が定義されていない状態でのチェック

<mt:If test="defined $foo">
defined!
<mt:Else>
undef!
</mt:If>

aの実施結果

undef!

b.変数を定義した後のチェック

<mt:SetVar name="foo" value="0" />
<mt:If test="defined $foo">
defined!
<mt:Else>
undef!
</mt:If>

bの実施結果

defined!

c.変数を undef した後のチェック

<mt:SetVar name="undef(foo)" />
<mt:If test="defined $foo">
defined!
<mt:Else>
undef!
</mt:If>

cの実施結果

undef!

undef 関数は、配列変数やハッシュ変数にも利用できます。

4.変数の NULL 設定について

Movable Type のテンプレートタグには、NULL 判定に該当する処理はありません。MT の変数が Perl に依存していると考えれば、Perl に NULL が存在しないのがその理由と思います。

なおネットで調べると、DB の NULL については、変数未定義の状態が該当するようです。

燈明日記 - DBでのNULLはPerlではどうなる?

また、PHP には NULL 判定がありますが、is_null() 関数が true を返却する条件として「未定義の変数」も含まれています。

つまり3項の、変数を未定義にする動作が NULL 設定に等しい(または近い)状態と思われます。

Comments [10] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3