第 4章変数

目次
phpから割り当てられた変数
設定ファイルから読み込まれた変数
予約変数{$smarty}

Smartyは色々な種類の変数を持っています。変数の種類は接頭辞の記号によって決まります。 (記号によって囲まれる場合もあります)

変数は、その値を直接表示したり、関数の属性のパラメータや変数の修正子、内部の条件式等に使用されます。 変数の値を表示するには単にデリミタで囲みます。
{$Name}

{$Contacts[row].Phone}

<body bgcolor="{#bgcolor#}">

phpから割り当てられた変数

phpから割り当てられた変数は、先頭にドル記号($)をつける事で参照できます。 また、assign 関数によってテンプレート内から割り当てられた変数もこの方法で表示できます。

例 4-1. 割り当てられた変数

Hello {$firstname}, glad to see you could make it.
<br />
Your last login was on {$lastLoginDate}.

出力:

Hello Doug, glad to see you could make it.
<br />
Your last login was on January 11th, 2001.

連想配列

ピリオドの後にキーを指定する事で、phpから割り当てられた連想配列を参照できます。

例 4-2. 連想配列の値にアクセスする

<?php
$smarty
= new Smarty;
$smarty->assign('Contacts',
    array(
'fax' => '555-222-9876',
          
'email' => 'zaphod@slartibartfast.com',
          
'phone' => array('home' => '555-444-3333',
                           
'cell' => '555-111-1234')));
$smarty->display('index.tpl');
?>

index.tpl:

{$Contacts.fax}<br />
{$Contacts.email}<br />
{* you can print arrays of arrays as well *}
{$Contacts.phone.home}<br />
{$Contacts.phone.cell}<br />

出力:

555-222-9876<br />
zaphod@slartibartfast.com<br />
555-444-3333<br />
555-111-1234<br />

配列のインデックス

本来のphp構文のように、配列のインデックスによる参照も可能です。

例 4-3. インデックスによって配列にアクセスする

<?php

$smarty
= new Smarty;
$smarty->assign('Contacts',
    array(
'555-222-9876',
          
'zaphod@slartibartfast.com',
          array(
'555-444-3333',
                
'555-111-1234')));
$smarty->display('index.tpl');

?>

index.tpl :

{$Contacts[0]}<br />
{$Contacts[1]}<br />
{* you can print arrays of arrays as well *}
{$Contacts[2][0]}<br />
{$Contacts[2][1]}<br />

出力 :

555-222-9876<br />
zaphod@slartibartfast.com<br />
555-444-3333<br />
555-111-1234<br />

オブジェクト

phpから割り当てられたオブジェクトのプロパティは、'->'の後にプロパティ名を指定する事で参照できます。

例 4-4. オブジェクトのプロパティにアクセスする

name: {$person->name}<br />
email: {$person->email}<br />

出力:

name: Zaphod Beeblebrox<br />
email: zaphod@slartibartfast.com<br />