2010年12月11日土曜日

Web製作でよく使うPHP変数の値有無判定関数





/**
*
* @param mixed $v
* @return boolean
*
**/
function v($v){
if(is_bool($v)){
return $v;
}elseif(is_numeric($v)){ // all numeric (0 and '0') are true.
return true;
}elseif(is_string($v)){
return !empty($v);
}elseif(is_array($v)){
$v = array_filter($v,"v");
return !empty($v);
}elseif(is_object($v)){
return v(get_object_vars($v));
}else{
return !empty($v);
}
}

実際にHTMLに出力するときは 0を値とみなすことのほうが多いと思いますので


0もTRUE扱いにしています。





PHPのStringのゼロに注意






$a = 0;
if(empty($a)){
echo 'TRUE';
}else{
echo 'FALSE';
}


これが、TRUEになることは容易にわかるのですが



$a='0';
if(empty($a)){
echo 'TRUE';
}else{
echo 'FALSE';
}



これも、TRUEになるとは盲点でした。恐るべしPHP





2010年12月1日水曜日

|| をつかって変数を初期化



値の不明な変数を初期化する場合



if($a){
$a = 'hogehoge';
}


もしくは



$a = $a ? $a : 'hogehoge';


これを以下のように書きます。



$a || $a = 'hogehoge';


|| は、if文の条件式にしか普段は使わないのだけれども


編集の初期化処理などに使うと1行で簡潔にかけて意外ときれい。


あまりこういう記述を増やすとPerlみたいに暗号のようなコードになりそうなので


ほどほどにしながら、ワンポイントで使うといいかも。





2010年11月30日火曜日

月、日の桁数をそろえたい時にsubstrの便利な使い方



月とかカレンダーの日をfor文でまとめて出力するときに


以下のように書くことがあるかと思います。




for($i=1;$i<=12;$i++){
echo $i.'月<br>';
}

=================

1月
2月
3月
4月
5月
6月
7月
8月
9月
10月
11月
12月



ただ、これだとレイアウト的に1桁の月と2桁の月でサイズがずれたりすることがあります。


そこで、1桁の月に頭に0をつけて 01月 02月 ... という風に表示したいとします。


IF文で書くと以下のような感じ。ちょっとIF文が仰々しくてあまりうれしくありません。



for($i=1;$i<=12;$i++){
if($i < 10){
echo '0'.$i.'月<br>';
}else{
echo $i.'月<br>';
}
}


これを、substrで書くとこんな感じ



for($i=1;$i<=12;$i++){
echo substr('0'.$i, -2) . '月<br>';
}

=================

01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月



全部の月の頭に0をつけて文字列として右から2文字を出力する形です。


別にそれほどエレガントでないかもしれませんが


同じ文字数にそろえたいレイアウトの整形という意味では


非常に的を得た方法ではないかなと思います。





suPHP の Premature end of script headers: の苦悩



suPHP をApacheにインストールして、PHPをCGI実行させてやろうとしたときに出たエラーメッセージ



Premature end of script headers:


とにかく、何が問題なのかは教えてくれず、どこか悪いといっているようです。


ブラウザをたたいても恐怖のInternetServerErrorだし。


いろいろ原因はあるみたいですが、はじめから設定内容を確認するしかなさそうです。


今回は、php-cgi バイナリーの設定ができていないという致命的なミスがあり


PHPをコンパイルしなおすところからやり直しました。(かなり嵌った)


結論:もう少しやさしめのエラーメッセージを希望!





2010年11月12日金曜日

SugarSyncの無料ストレージ容量が5GBにアップ!



いやはや、この無料のストレージ容量が増えたのはすごくうれしい。


SugarSync





個人的に、DropBoxやらSugarSyncなんかのファイル同期ストレージは


ヘビーに利用しているのでどんどんデータがたまって容量不足にいつも困ってました。


ちょこっと書いたソースやドキュメントをとりあえず同期して


気が向いたら続きを書くといった場所を選ばない開発ができます。


5GBも使えるとほぼ開発環境を丸ごとほりこんでも大丈夫じゃないでしょうか。


どこでも同じ設定で使えるのは開発を始めるときの障壁が少なくなりますしね。


これでもっと開発が楽しくなる予感!





※有料のLiveDrive使って容量無制限のストレージも使ってるけど


ソフトが重たいのが難点。あとLinuxと同期できるとなおうれしい。





2010年10月20日水曜日

もっと気楽に書こう



ブログを書くのがどうも進まないので、


もう少し、気楽にどうでもいいことも書くようにしようかと思います。


はじめは、技術系の備忘録的な意味で書いてましたが


備忘録といっても、仕事関係はオープンにできないことが多いので


必然的に、汎用的な内容を選ぶことになります。


ただ、それだとネタをそれほど持ち合わせていない私はすぐに窮してしまい


どんどん書かなくなってしまったので書くモチベーションを維持できるよう


適当なことも、もう少し入れていこうかと思います。


「そんなにまでしてなぜブログを書くんだ?」と言われますと


単純に、文章を書くのが苦手なのでそのトレーニングの意味が大きいです。


その中で、ただ書くだけじゃなく技術系のことなら多少知識や経験もあるので


残すと役に立つかなとなんとなく思ったからです。


ただ、実際にはぜんぜん書けてないのでこの有様です。


とにかくエントリーが続けれるようにがんばります。