Tips 誤りの指摘やご意見はこちらへ ご意見板
BBS

PHP Top
項目
このコーナーでは、PHP関連のちょっといい話、ちょっとしたテクニックなどを紹介していきます。
肩の力を抜いて(重要です)お楽しみください。

効果的にデバッグしたい
セッション管理するクラスを使いたい
PHP4って速いの?
"や'が勝手に\"とか\'になるんだけど?

効果的にデバッグしたい ↑項目に戻る
最近PHPをはじめた方の為に、効果的なデバッグの方法をこっそりお教えします。

統合開発環境がいまだ無いPHPのデバッグでは、要所要所で変数の値をprintされている人が多いと思います。
そこで、

○デバッグ用のフラグを用意しましょう

文頭で

$debug = true; //デバッグ用フラグ


としましょう。そして、デバッグの為に変数の中身をprintする時には、


if($debug) print $value; //デバッグ用の変数表示

のようにします。 こうしておくと、文頭の$debugの内容をtrue,false(1,0等も可)と切り替えるだけで 全デバッグ用出力をON、OFFできます! ワースゴイ
※必要に応じて何段階ものデバッグフラグを用意してもいいでしょう

○PHPのステキな関数を利用しましょう

私オススメの関数はprint_r()関数です

print_r($value);

とすると、$valueが文字列でも、整数でも、配列でさえも、 適切に出力してくれるんです! デバッグに役立ってくれること間違いなし!うーんマイッチング! この関数のことを思い出すだけでジュン♪となっちゃうこと間違いなし!
※var_dump()も似たような機能を持ちます。
お好みで使い分けてください。

PHPの定義する変数を利用しましょう

私がよく使うのは

$HTTP_COOKIE_VARS
$HTTP_POST_VARS
$HTTP_GET_VARS

です。
それぞれの方法(COOKIE, POST, GET)によりクライアントより受け取った変数が連想配列として記録されています。
例えば、
フォーム[A]よりPHPスクリプト[B]に対してname,password,titie,commentという変数がPOSTされるという仕様だったとしましょう。



今までPHPスクリプト[B]の冒頭で

print "name=".$name;
print "password=".$password;
print "title=".$title;
print "comment=".$comment;

などとしてデバッグしていた方は多いのでは?これからは、

print_r($HTTP_POST_VARS);

と一行書くだけですね。;)
※サイトのセキュリティを高める為にも使用できます。
詳しくはPHPマニュアルの「グローバル変数への登録を使用」を参照してください。
サイトの信頼性を高めるために重要な事が沢山書いてあります。

セッション管理するクラスを作りたい ↑項目に戻る
ある程度PHPを使用していると、再利用可能なクラスが沢山溜まっていきます。
ある日、セッション管理をするクラスを作ろうと思って作ってみました。


<?php
  class MyClass {
    function MyClass($state) { //コンストラクタ
      session_start();
      session_register("hoge");
      $hoge = "test";
    }
    ・
    ・
  }
?>

これは期待通りに$hogeをセッションに登録してくれません。
このクラスの呼び出し元のファイルから$hogeを使おうとしても、おそらく空っぽでしょう。
いったいなぜでしょうか?

この場合、$hogeは
クラスのメンバメソッドのローカル関数
となっています。
値を呼び出し元のファイルから参照することはできません。
そこで、クラス内の全ファンクションで$hogeをglobal宣言してください。
期待通り、セッションに$hogeを登録することができるでしょう。;)

PHP4って速いの? ↑項目に戻る
ハヤイんです!!
PHP4はZendエンジンの搭載により、神をも恐れぬ、まさに大地を穿つほどの
超ド級速度を手にしたのです!
Zendエンジンのサイトによると、QuickSortの場合なんとPHP3の4.6倍速ウウウウゥゥゥ!!!
どうです?おどろいたでしょう?


ごもっともです。

ASP vs PHP4 !!
QuickSort PHP(最適化コンパイラ使用)が66%早い!!
フラクタル計算 PHP(最適化コンパイラ使用)が233%早い!

どうです?シビレルでしょう?
Web Application Benchimarksでもトップクラスの性能をはじき出しています

(記事はかなりPHP寄りに書いております もちろん嘘は書いておりませんが,
あえてPHPに不利な情報を伏せている可能性が無いこともないです)

”や’が勝手に¥”とか¥’になるンだけど? ↑項目に戻る
あれ?何もしてないのに勝手に¥(円マーク、バックスラッシュ)がついてるぞ?

そんな経験ありませんか?

ある ない

ありますよね。
おせっかいをしているのはmagic_quotesというオプションです。
これはphp.iniで設定されているのですが、デフォルトでONになっています。
' (シングルクオート)、 " (ダブルクオート)、\ (バックスラッシュ) 、NUL(\0)が
自動的にエスケープされるというスグレモノですが、邪魔な場合もあります。

そんなときは、php.iniを編集して、OFFにしちゃいましょう。
もちろん、Apacheの再起動を忘れずにネ♪

↑項目に戻る

PHP Top