STACクラスリファレンス

STACクラスはテンプレートファイルのコンパイル及び表示を行うクラスです。
STACを使用するクライアントプログラムは、このクラスしか使用しません。

__constructor($strConfigPath='')

【概要】

コンストラクタ

【引数】

$strConfigPath (string):STConfig.phpへのパス。(省略可能)

【説明】

STACオブジェクトを作成します。

$strConfigPathを指定しない場合はSTAC.class.phpと同じディレクトリのSTConfig.phpを読み込みます。

(ブラウザごとやPC向け/携帯向けなど)読み込むテンプレートディレクトリごとにSTConfig.phpを分けておくと便利かもしれません。

ページトップへ

template_dir( $strPath )

【概要】

読み込むテンプレートファイルディレクトリを設定します。

【引数】

$strPath (string):設定するディレクトリパス。

【戻り値】

成功時、true。失敗時、false。

【説明】

この関数を呼び出さずにdisplay()を呼び出すと、ST_Config.phpの「STAC_TEMPLATE_DIR」で指定されたデフォルトディレクトリをテンプレートディレクトリとみなします。
逆に言うと、「STAC_TEMPLATE_DIR」でディレクトリを指定している場合はこの関数を呼び出す必要はありません。

ページトップへ

compile_dir( $strPath )

【概要】

コンパイル後の実行PHPファイルを保存するディレクトリを設定します。

【引数】

$strPath (string):設定するディレクトリパス。この引数で指定されるディレクトリは、PHPが実行されているプロセスユーザーから書き込みができるパーミッションが与えられている必要があります。

【戻り値】

成功時、true。失敗時、false。

【説明】

この関数を呼び出さずにdisplay()を呼び出すと、ST_Config.phpの「STAC_COMPILE_DIR」で指定されたデフォルトディレクトリをテンプレートディレクトリとみなします。
逆に言うと、「STAC_COMPILE_DIR」でディレクトリを指定している場合はこの関数を呼び出す必要はありません。

ページトップへ

setTplEncoding( $strEncoding )

【概要】

テンプレートファイルの文字エンコーディングを指定します。

【引数】

$strEncoding (string):設定する文字エンコーディングを表す文字列。mbstringモジュールによってサポートされている文字エンコーディング文字列を指定できます。詳しくは「PHPのマニュアル」を参照して下さい。

【戻り値】

成功時、true。失敗時、false。

【説明】

STACはコンパイル時にこの関数で指定された文字エンコーディングから、setOutputEncoding()関数で指定された文字エンコーディングに変換を行います。しかし、現在のバージョンではそれ以外の場所(assign()関数など)で文字エンコーディングを行う機能は用意されていません。
文字エンコーディングはなるべくテンプレートファイルとコンパイル後のコードと呼び出しPHPプログラム、全てで同じ物を使用するようにしてください。

ページトップへ

addSectionVarFilter( $strVarName , $strKey , $strFunc , $arrParams=array() )

【概要】

{section}関数のloop属性に指定した配列変数に関数呼び出しを追加します。

【引数】

$strVarName (string):loop属性に指定した配列変数名を「$」なしで指定します。
$strKey (string):配列変数内のキー文字列を指定します。
$strFunc (string):呼び出す関数名を文字列で指定します。静的呼び出しのみが行えます。クラスメソッドを呼び出すときは[クラス名]::[関数名]のように指定します。指定された関数の1番目の引数に対象の配列変数の要素が渡されます。
$arrParams (array):呼び出す関数の2番目以降の引数配列を指定します。

【説明】

この関数を使用すると、{section}に使用するループ変数の指定要素の出力時の書式変換などが行えるようになります。

例えば、

$persons = array(
            array(
                'name'=>'Person1'
                , 'age'=>18
                , 'power'=>10000
            )
        );
$stac->assign('persons',$persons);
$stac->addSectionVarFilter('persons','power','number_format');

のようなコードで実行すると、{section loop=$persons}内での{$persons.power}のコンパイル後のコードは

echo number_format($person['power']);

と同様の意味のコードになります。($personは$personsの各要素)

この関数はassign()されている変数にのみ適用されます。
この関数はコンパイル時に指定関数呼び出しコードを出力します。
コンパイル後、クライアントコードで動的に呼び出す関数を切り替えても適用されませんので注意して下さい。
動的に適用する関数を変更したい場合は、assign()を呼び出す前に対象要素の内容を直接変換して下さい。

ページトップへ

addTemplateVarFilter( $strVarName , $strFunc , $arrParams=array() )

【概要】

テンプレート変数に関数呼び出しを追加します。

【引数】

$strVarName (string):テンプレート変数名を「$」なしで指定します。
$strFunc (string):呼び出す関数名を文字列で指定します。静的呼び出しのみが行えます。クラスメソッドを呼び出すときは[クラス名]::[関数名]のように指定します。指定された関数の1番目の引数に対象の配列変数の要素が渡されます。
$arrParams (array):呼び出す関数の2番目以降の引数配列を指定します。

【説明】

この関数を使用すると、テンプレート変数の出力時の書式変換などが行えるようになります。
{foreach}で指定するkeyやvalueにもこの関数を適用できます。

例えば、

$price = '5000';
$stac->assign('price',$price);
$stac->addTemplateVarFilter('price','number_format');

のようなコードで実行すると、{$price}のコンパイル後のコードは

echo number_format($price);

と同様の意味のコードになります。

{section}のループ変数の要素に同様の関数呼び出しを適用する場合は、addSectionVarFilter()を使用して下さい。

この関数はassign()されている変数にのみ適用されます。
この関数はコンパイル時に指定関数呼び出しコードを出力します。
コンパイル後、クライアントコードで動的に呼び出す関数を切り替えても適用されませんので注意して下さい。
動的に適用する関数を変更したい場合は、assign()を呼び出す前に対象要素の内容を直接変換して下さい。

ページトップへ

assign( $strVarName , $value )

【概要】

テンプレート変数に呼び出し元プログラム側の変数を割り当てます。

【引数】

$strVarName (string):割り当て対象のテンプレート変数名を「$」なしで指定します。
$value (mixed):割り当てる値。section関数のloop属性に割り当てる場合は二次元配列、foreach関数のfrom属性に割り当てる場合は一次元配列を指定します。

【戻り値】

成功時、true。失敗時、false。

【説明】

テンプレートファイルの変数を有効にするには、STAC::display()を呼び出す前に、この関数で各テンプレート変数に値を割り当てておく必要があります。
section関数のloop属性やforeach関数のfrom属性の変数もこの関数を使用して割り当てます。

ページトップへ