Home > PHP
PHP Archive
Smartyのテンプレート側でPHPの標準関数を使用する
- 2010年10月1日 10:42 AM
- PHP
Smartyのテンプレート側ではPHPの標準関数を使用することができます。
使い方は、変数の修飾子として関数を使用します。
変数の修飾子は、 変数 や カスタム関数 や文字列を修飾して出力することができます。修飾子を適用するには、 変数名の後に | (パイプ) と修飾子の名前を指定します。 また、修飾子はその動作に影響を及ぼす追加のパラメータを受け入れる場合もあります。 そのパラメータは修飾子の後に続き、: (コロン) によって区切られます。 また、すべての PHP 関数は、暗黙的に修飾子として使用でき (あとで説明します)、修飾子は 組み合わせる こともできます。
Smarty マニュアル | 第5章変数の修飾子
使用する際の注意点としては以下があります。
- 関数に適用する変数が配列の場合、関数名の前に「@」をつける。
- 「|(パイプ)」の後に書いた関数の第一引数に変数が渡される。関数の引数が2つ、3つあるような関数の場合は変数を「:(コロン)」で区切って記述します。
配列に対して修飾子を用いた場合は、その配列に格納された全ての値に影響を及ぼします。 配列全体を1つの値として作用させるには修飾子の先頭に @ 記号をつける必要があります。
Smarty マニュアル | 第5章変数の修飾子
使用例は以下です。
<!-- 変数(string)を大文字にする -->
<p>{$title|upper}</p>
<!-- 配列の要素数を取得する -->
<p>{$array|@count}</p>
<!-- パラメータが2つ以上ある場合($language = "PHP関数") -->
<p>{"PHP"|str_replace:"Ruby":$language}</p>
参考
- Comments: 0
- Trackbacks: 0
XAMPP 1.7.3にPHPUnit 3.5をインストールする
- 2010年9月30日 11:41 AM
- PHP
XAMPP(Lite)環境にPHPUnitをインストールした時にかなりはまったので、そのメモです。
環境は以下。
- XAMPP Lite 1.7.3 for Windows(PEARははじめからインストールされています)
- PHPUnitのバージョンは3.5
PEARを最新版にアップグレードする
まずcmdでxamppのphpディレクトリに移動して(pearコマンドのパスが通っている場所)、PEARのバージョンを確認します。
恐らく以下のように、1.9.0のはずなので、最新版にアップグレードします。(アップグレードしないと、PHPUnit3.5のインストールが中途半端になります)
cd C:\xampplite\php pear version >PEAR Version: 1.9.0 >PHP Version: 5.3.1 >Zend Engine Version: 2.3.0 >Running on: Windows NT XX 5.1 build 2600 (Windows XP Professional Service Pack 3) i586
以下のコマンドでPEARをアップグレードします。これで1.9.1になると思います。
pear upgrade PEAR pear version
PEARチャネルを追加する
以下のコマンドを打ち、PEARチャネルを追加します。
pear channel-discover pear.phpunit.de pear channel-discover components.ez.no pear channel-discover pear.symfony-project.com
PHPUnitをインストールする
以下のコマンドでインストールします。
pear install phpunit/PHPUnit
以下のコマンドで追加したチャネルにPHPUnitで必要なライブラリがインストールされていることを確認します。
pear list -a
PHPUnitを実行する
以上の手順を踏むと、C:\xampplite\phpに「phpunit.bat」ができていると思います。
そのバッチファイルを実行し、正しく動いているか確認します。
phpunit --version >PHPUnit 3.5.0 by Sebastian Bergmann.
参考
- Comments: 4
- Trackbacks: 0
php.iniでsession.save_pathを設定しない(no value)とどうなるか?
- 2010年9月28日 10:30 AM
- PHP
とある環境でphpinfo()をしてみたらsession.save_pathの欄が「no value」となっていて、
「あれ?これじゃあセッション使えないんじゃない?」と思って調べてみました。
検証環境は以下。
- php4.4.1(とある業務の都合でめちゃ古いです。。でもphp5でも同じかと)
- IIS6.0
php.ini
session.save_path = session.cookie_path =
結果
session.save_pathは指定しない(no value)と、IIS(Windows)の場合「C:\WINDOWS\Temp」に「sess_XXX」という名前で勝手に保存します。
またsession.cookie_pathは指定しないと、「/」(ルート)に勝手に設定されます。
なので、これらが設定されていないからといって、セッションが使えないということはなさそうです。
- Comments: 0
- Trackbacks: 1
SmartyでURLを自動リンクするプラグイン
- 2010年9月6日 4:25 PM
- PHP
プラグインを配置する
Smart/libs/pluginsにmodifier.auto_link.phpという名前でPHPファイルを配置する。
関数を書く
modifier.auto_link.phpに以下を記述する。
<?php
/**
* URL自動リンクプラグイン<br>
* 指定された文字列にURLが含まれる場合、その個所をaタグで囲む。<br>
*
* @param string 文字列
* @return string URLをaタグで囲んだ文字列
* @access public
*/
function smarty_modifier_auto_link($string) {
// nullまたは空文字の場合、そのまま返却する。
if (is_null($string)) {
return $string;
}
// URL形式のチェック用正規表現
$regString = '/(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/';
return preg_replace($regString, "<a href=\"\\0\" target=\"_blank\">\\0</a>", $string);
}
?>
使い方
<p>{$var|auto_link}</p>
参考
- Comments: 0
- Trackbacks: 0
ホーム > PHP
- Search
- Feeds
- Meta