予約変数 {$smarty} (変数) - PHPプロ!マニュアル

Smartyマニュアル

変数 - 予約変数 {$smarty}

予約変数 {$smarty}

PHP の予約変数 {$smarty} を使用すると、 環境変数やリクエスト変数にアクセスすることができます。 アクセスできる内容について、以下に説明します。

リクエスト変数

$_GET$_POST$_COOKIE$_SERVER$_ENV および $_SESSION ( $request_vars_order および $request_use_auto_globals を参照してください) といった リクエスト変数 にアクセスするには、下の例のようにします。

例 4-7. リクエスト変数の表示

{* ($_GET) http://www.example.com/index.php?page=foo から page の内容を表示 *}
{$smarty.get.page}

{* ($_POST['page']) フォームから送信された変数"page"の値を表示 *}
{$smarty.post.page}

{* クッキーに登録された"username"の値を表示 ($_COOKIE['username']) *}
{$smarty.cookies.username}

{* サーバ変数"SERVER_NAME"の値を表示 ($_SERVER['SERVER_NAME']) *}
{$smarty.server.SERVER_NAME}

{* 環境変数"PATH"の値を表示 *}
{$smarty.env.PATH}

{* phpのセッション変数"id"の値を表示 ($_SESSION['id']) *}
{$smarty.session.id}

{* get/post/cookies/server/envの値から、変数"username"の値を表示 *}
{$smarty.request.username}

注意: 歴史的な理由から、{$SCRIPT_NAME} には直接アクセスできます。 しかし、この値にアクセスする方法としては {$smarty.server.SCRIPT_NAME} が推奨されています。

<a href="{$SCRIPT_NAME}?page=smarty">click me</a>
<a href="{$smarty.server.SCRIPT_NAME}?page=smarty">click me</a>

{$smarty.now}

現在の タイムスタンプ にアクセスするには {$smarty.now} を使用します。 この値は、いわゆるエポック (1970年1月1日) からの経過秒数が含まれます。 また、これを直接 date_format 修飾子に渡して表示させることができます。実行するたびに time() がコールされることに注意しましょう。つまり、全体を処理するのに3秒かかるスクリプトがあったとして、 その最初と最後でそれぞれ $smarty.now をコールすると、その値には2秒の差が生じます。

{* date_format 修飾子を用いて、現在の日付と時刻を表示します *}
{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}

{$smarty.const}

PHP 定数の値に直接アクセスできます。smarty 定数 も参照してください。

<?php
// php で定義されている定数
define('MY_CONST_VAL','CHERRIES');
?>

定数を出力するテンプレート

{$smarty.const.MY_CONST_VAL}

{$smarty.capture}

組み込みの {capture}..{/capture} 関数でキャプチャしたテンプレートの出力にアクセスするには {$smarty.capture} 変数を使用します。 詳細は {capture} のページを参照してください。

{$smarty.config}

{$smarty.config} 変数は、読み込まれた config 変数 を参照するのに使用できます。 {$smarty.config.foo}{#foo#} と同義です。詳細は {config_load} のページを参照してください。

{$smarty.section}、{$smarty.foreach}

{$smarty.section} 変数および {$smarty.foreach} 変数は、 {section} および {foreach} のループプロパティを参照するために使用します。 この中には .first.index といった有用な値が含まれます。

{$smarty.template}

現在処理中のテンプレートの名前を返します。 次の例の container.tpl と、そこからインクルードしている banner.tpl の両方で {$smarty.template} を使用しています。

<b>Main container is {$smarty.template}</b>
{include file='banner.tpl'}

出力は、このようになります。

<b>Main page is container.tpl</b>
banner.tpl

{$smarty.version}

このテンプレートをコンパイルした Smarty のバージョンを返します。

<div id="footer">Powered by Smarty {$smarty.version}</div>

{$smarty.ldelim}、{$smarty.rdelim}

これらの変数を使用して、左右のデリミタをそのまま表示します。 {ldelim}、{rdelim} と同じです。

assigned variables および config variables も参照してください。

閲覧履歴



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)