WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート PHP

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

よくメソッドの引数がnullかどうかを判断するのに


if($search = $this->_getParam('search'))
{
//nullじゃ無かったときの処理
}
のような書き方を使うのですが、二つチェックする時は注意が必要です。


if($search = $this->_getParam('search') && $cc = $this->_getParam('cc'))
{

}
このように書くと最初の$searchはbooleanになってしまいます。&&の方が=よりも優先順位が高いからです。

if(($search = $this->_getParam('search')) && ($cc = $this->_getParam('cc')))
{

}
このように括弧で括れば期待通りに動きます。

    このエントリーをはてなブックマークに追加


function myPrintf()
{
$args = func_get_args();
$format = $args[0];
unset($args[0]);
return vsprintf($format, $args);
}
formatにbindする変数を配列で受け取るvsprintfというのがあるので、それで出来ます。

echo myPrintf("/test/%s/%d/index.html", 'foo', 123);
//出力-> /test/foo/123/index.html

    このエントリーをはてなブックマークに追加

Smarty3からextendsという便利な機能がつきました。
entendsについては「Smarty3を使ってみる」に書きましたが、テンプレートの継承のような機能です。

その{block}にmodeという属性があります。
例えば親テンプレートで


{block name='css'}

{/block}
こんなブロックを宣言してるとして、子テンプレートで

{block name='css'}

{/block}
とすると、上書いてしまうので/css/global/base.cssは読み込まれません。
そこで

{block name='css' mode='append'}

{/block}
とすると後ろに追加されます。PHPでオーバーライトしたメソッドでparentを呼び出すような感じです。
mode='prepend'というのもあって、文字通り/page.cssが先に読み込まれます。

こんなことできたら便利だなと思ってソースを見たら案の定ありました。流石です。

    このエントリーをはてなブックマークに追加

Smarty3になって、オブジェクトをアサインする機会が増えたのですが、メソッドの引数に
別のメソッドの引数を連結して渡したいシチューエーションがあって、てこずったので載せておこいます。


{$image->getTag("{$item->getName()} {$ite->getCode()}") nofilter}
全体をクオートで囲みメソッド部分は中括弧で囲みます。PHPでやるときのように.(ドット)は使用しません。

    このエントリーをはてなブックマークに追加

[PHP]PHPすげー

2010-04-28 19:46

くだらない話題ですいません。まわりで誰も知らなかったし、面白いので書きます。
次のコードを見てください


class 犬
{
public function おすわり()
{
echo 'Bow! Bow!'.PHP_EOL;
}
}


$ぽち = new 犬();
$ぽち->おすわり();
実行してみてください・・・そう、動くんです。文字コードは色々試したけど大体動きました。

まあ、それだけなんですけど・・・すいません。

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。