PHP4でPHP5の関数を使いたい時に便利なライブラリ upgrade.php
管理していてPHP5へ移行したくてもすぐには移行できないサーバーも多く存在していると思います。
そのような環境の中で、Facebookを始めとするJSON形式で情報取得するようなAPIを利用したサービスを作るために提供されているライブラリには、「json_decode」等のPHP5以降でないと利用できない関数が使われていることが多いです。
これらの関数を使わないで処理できるようにライブラリを改良すればPHP4でも問題無く利用できますが、それも結構な手間になります。
そんな時に「upgrade.php」というライブラリを読み込むことで、PHP5以降でしか利用できない関数をPHP4でも利用できるようになります。
使い方は、
これだけ。とてもお手軽です♪
ただ、利用する際には、「PHPのバージョンがPHP4の場合に利用する」という処理を含めて、
という形にしておいた方が、そのプログラムをPHP5以降の環境へ移した際にも不具合無く利用できるかと思います。
たぶん、PHP3では使えないので、これでいいかなと(^^;
そのような環境の中で、Facebookを始めとするJSON形式で情報取得するようなAPIを利用したサービスを作るために提供されているライブラリには、「json_decode」等のPHP5以降でないと利用できない関数が使われていることが多いです。
これらの関数を使わないで処理できるようにライブラリを改良すればPHP4でも問題無く利用できますが、それも結構な手間になります。
そんな時に「upgrade.php」というライブラリを読み込むことで、PHP5以降でしか利用できない関数をPHP4でも利用できるようになります。
使い方は、
<?php
require_once("upgrade.php");
?>
これだけ。とてもお手軽です♪
ただ、利用する際には、「PHPのバージョンがPHP4の場合に利用する」という処理を含めて、
<?php
if (intval(phpversion()) == 4) require_once("upgrade.php");
?>
という形にしておいた方が、そのプログラムをPHP5以降の環境へ移した際にも不具合無く利用できるかと思います。
たぶん、PHP3では使えないので、これでいいかなと(^^;
Chromeでセッションが消える原因はfavion.ico?
PHPのセッションを利用して作成した管理画面。
IEやFireFoxでは問題無かったのですが、Chromeだとログイン後にサイト内の同セッションを利用しているページに移動すると、$_SESSIONの中身が空っぽになるという現象が起きていました。
で、ふと、以前Sleipnirでも同じような現象が起きたことがあって、その時はSleipnirでfavion.icoのキャッシュを保存しないように設定することで改善出来たことを思い出しました。
ただ、Chromeの設定にはそのような項目がありません。
そこで、「もしかしたらfavicon.icoが無いのが問題なのでは?」と思い、favicon.icoを作成してサイトのルートディレクトリに置いたところ、Chromeでもちゃんとセッションを引き継げるようになりました。
調べてもfavicon.icoとセッションの関連性は分かりませんでしたが、解決して良かったです。
IEやFireFoxでは問題無かったのですが、Chromeだとログイン後にサイト内の同セッションを利用しているページに移動すると、$_SESSIONの中身が空っぽになるという現象が起きていました。
で、ふと、以前Sleipnirでも同じような現象が起きたことがあって、その時はSleipnirでfavion.icoのキャッシュを保存しないように設定することで改善出来たことを思い出しました。
ただ、Chromeの設定にはそのような項目がありません。
そこで、「もしかしたらfavicon.icoが無いのが問題なのでは?」と思い、favicon.icoを作成してサイトのルートディレクトリに置いたところ、Chromeでもちゃんとセッションを引き継げるようになりました。
調べてもfavicon.icoとセッションの関連性は分かりませんでしたが、解決して良かったです。
PHP5技術者認定上級試験開始は11月の予定
以前、公式ページを拝見した時は確か9月の予定になっていましたが、先程見たところ11月に変更されていました。
初級合格したからには上級も受けたいと思っています。
初級試験と同様、プロメトリックの試験会場で受けられるのが嬉しいですね。
PHP技術者認定機構 - 上級試験概要
初級合格したからには上級も受けたいと思っています。
初級試験と同様、プロメトリックの試験会場で受けられるのが嬉しいですね。
PHP技術者認定機構 - 上級試験概要
PHP5技術者認定初級試験に合格しました。
試験の結果は「90点」で合格(ほっ

【 試験を受けた理由 】
PHPの実務経験歴は10年近く、最近(といっても昨年秋)PHPの技術者の認定試験が開始されて気になっていたので、自分の実力確認の意味も込めて受験しました。
PHP技術者認定機構
【 試験対策 】
●PHP技術者認定機構のページで公開されている、アシアルの試験対策セミナー時の一部映像
特に後半に模擬テストの問題やその解説映像で少しだけ問題の雰囲気が掴めます。
●同セミナー時に配布された資料
一次、二次ベータ試験の回答率の辺りが参考になります。
●ダウンロードしたPHPマニュアル
HTML版とchm版があるのですが、chm版の方がマニュアル内の検索も可能で便利です。
Windowsではchmファイルをそのまま開けます。
MacやiPhoneの場合は、iChmというアプリケーションを入れることでchmファイルを閲覧できて便利です。
●オライリー社の「初めてのPHP5」
PHP5技術者認定初級試験はオライリー社の「初めてのPHP5」が教本に指定されているので、これを購入
●Rubyの時と同じく、PCにPHPが動かせる環境を作り、
教本を読んで疑問に思ったら実際にプログラムを書いて動作を確かめる
私が行った試験対策としてはこんな感じでしょうか。
【 試験予約 】
Ruby技術者認定試験を受けた時と同じテストセンターで受験しましたので、その時のエントリーも参考にしてください。
Ruby技術者認定試験 Silverに合格しました!
PHP5技術者認定試験はテストセンターで受験できるため、予約が取れればいつでも試験を受けることが可能ですが、都合が悪くなりキャンセルする場合のことも考えて、1週間程度は余裕を見て予約しておいた方が安心です。
テストセンターでは様々な試験が行われているため、近々の予約は結構詰まっていることが多いようです。
試験予約はプロメトリックのサイトでユーザー登録後に、家、会社などから近いテストセンターを選択して予約します。
PHP5技術者認定初級試験の試験料は、12,000円。この価格はプレッシャーになります。
予約完了後に表示される確認書ページを印刷して試験当日に持っていく必要があるのですが、印刷環境が無い場合は、サポートセンターに連絡をすると、その日に確認書の郵送処理を行ってくれます。
今回は印刷環境を家に用意していたので、家で印刷しました。
その他、試験当日に必要なものとして身分証明書2点があるのですが、確認書に記載されているものがちゃんと揃っているか、必ず確認しておいてください。
これらを忘れると、当日試験を受けられなくなります。
【 試験当日 】
必ず、集合時刻前に試験会場に着くようにしてください!
Ruby技術者認定試験の時は集合時刻の5分前に着いてちょっとギリギリだったので今回は15分前に会場に到着。
実際名前を呼ばれたのは集合時刻の10分前くらいだったので、集合時刻として指定されている時刻よりもさらに15分位前には会場に着いていた方が安心かと思います。
受験日は休日だったのですが、集合時刻前には受付前に受験者が沢山。
普段の日はスーツ姿の方が多かったですが、今回は全員私服でした。
名前を呼ばれたら受付に行き、身分証明書2点を掲示して、サイン等を行って鍵を受け取ります。
ロッカーに貴重品等を閉まったら、次に呼ばれた時に、メモ用ボードとペンの入った試験セットを受け取り、全員受け取り終えたら試験会場へ移動し、着席後に各自試験開始です。
試験時間は60分、PHP5技術者認定試験の場合は40問中28問以上正解で合格点となります。
コンピュータ試験で、画面に表示された問題に該当する答えの選択肢をマウスでクリックして選択する形です。
その際、画面左下に見直しチェックを入れる欄があるので、後で見直したい問題、後でじっくり解く問題にチェックを入れておくと確認時に確認しやすいです。
ただ、全問回答語の確認画面からどの問題へも移動可能なので、チェックを入れなかった問題はもう確認できないということは無いのでご安心ください。
ただ、コンピュータ試験はOSがWindowsで結構古いマシンを利用するので、試験中にフリーズするんじゃないかという変なドキドキ感は常にあります。。
「もうOK」となったら、確認画面の「テストを終了」ボタンをクリックすると試験終了となりますが、その後すぐに得点と合格/不合格が表示されます!
試験が終わったら退室して、試験セットを返却し、スタッフから試験結果の紙を貰って帰ります。
【 試験を終えて 】
Ruby技術者認定試験の場合は模擬問題付きの公式ガイドがあるため、それを中心に勉強をすることで合格点以上の得点を採ることができましたが、PHP5技術者認定試験の場合、「初めてのPHP5」は試験の公式ガイド目的で作られた本ではなく、この本以外も試験範囲に入っていることから、本中心の勉強だけでは少々厳しいかもしれませんが、合格点以上は採れると思います。
あと、PHPとデータベースを連携したシステム構築経験を持つ人は、教本無しでも合格点以上は採れるかと思います。
ただ、解らない問題があるというのは実際の試験時に不安だと思うので、実際に何かシステムを作っていろいろといじってみてPHPの癖を確認して知っておく必要があります。
コンピュータ試験は毎回問題がランダムで出題されるのですが、私の場合、合格点は確実と感じていても5問程回答が不安な問題がありました。
実際そのうち4問を間違えていました。
【 試験問題の傾向 】
「独学による合格率を75%、認定スクール受講生による合格率85%」に設定して問題が作られているため、合格点は採れるようになっていても、中には、ほとんど聞かない言葉が選択肢にひょこっと出てきたりもするため、その時の問題内容によっては100点満点を採るのが難しい場合もあると思います。
問題の雰囲気としては、「◯◯の説明として正しいもの(or 誤っているもの)を選択しなさい」という形式の問題が結構多く、選択肢の文章も多少長かったので、問題をよく読んで選択肢をしっかり見て答えないと間違える可能性が高くなります。
プログラムを組んで動かしてPHPの各機能、仕様の概念をしっかりと把握しえおくことで、この辺りの問題がスムーズに回答できるかと思います。
また、データベース関連で、INSERT、SELECT、UPDATE、DELETEを組み合わせたプログラムの実行結果の出力を選択させる問題もありました。
この問題は頭でだけ考えて解くと混乱するため、メモしつつ解きました。
一通り回答し終えた後に、時間の掛かる問題、見直しチェックを入れた問題を解いて、全問を再度確認。。という流れでほぼ試験時間いっぱい掛かりました。
この試験の上級試験が今年の9月に開始予定されているので、そちらも受験してみたいです。

【 試験を受けた理由 】
PHPの実務経験歴は10年近く、最近(といっても昨年秋)PHPの技術者の認定試験が開始されて気になっていたので、自分の実力確認の意味も込めて受験しました。
PHP技術者認定機構
【 試験対策 】
●PHP技術者認定機構のページで公開されている、アシアルの試験対策セミナー時の一部映像
特に後半に模擬テストの問題やその解説映像で少しだけ問題の雰囲気が掴めます。
●同セミナー時に配布された資料
一次、二次ベータ試験の回答率の辺りが参考になります。
●ダウンロードしたPHPマニュアル
HTML版とchm版があるのですが、chm版の方がマニュアル内の検索も可能で便利です。
Windowsではchmファイルをそのまま開けます。
MacやiPhoneの場合は、iChmというアプリケーションを入れることでchmファイルを閲覧できて便利です。
●オライリー社の「初めてのPHP5」
PHP5技術者認定初級試験はオライリー社の「初めてのPHP5」が教本に指定されているので、これを購入
●Rubyの時と同じく、PCにPHPが動かせる環境を作り、
教本を読んで疑問に思ったら実際にプログラムを書いて動作を確かめる
私が行った試験対策としてはこんな感じでしょうか。
【 試験予約 】
Ruby技術者認定試験を受けた時と同じテストセンターで受験しましたので、その時のエントリーも参考にしてください。
Ruby技術者認定試験 Silverに合格しました!
PHP5技術者認定試験はテストセンターで受験できるため、予約が取れればいつでも試験を受けることが可能ですが、都合が悪くなりキャンセルする場合のことも考えて、1週間程度は余裕を見て予約しておいた方が安心です。
テストセンターでは様々な試験が行われているため、近々の予約は結構詰まっていることが多いようです。
試験予約はプロメトリックのサイトでユーザー登録後に、家、会社などから近いテストセンターを選択して予約します。
PHP5技術者認定初級試験の試験料は、12,000円。この価格はプレッシャーになります。
予約完了後に表示される確認書ページを印刷して試験当日に持っていく必要があるのですが、印刷環境が無い場合は、サポートセンターに連絡をすると、その日に確認書の郵送処理を行ってくれます。
今回は印刷環境を家に用意していたので、家で印刷しました。
その他、試験当日に必要なものとして身分証明書2点があるのですが、確認書に記載されているものがちゃんと揃っているか、必ず確認しておいてください。
これらを忘れると、当日試験を受けられなくなります。
【 試験当日 】
必ず、集合時刻前に試験会場に着くようにしてください!
Ruby技術者認定試験の時は集合時刻の5分前に着いてちょっとギリギリだったので今回は15分前に会場に到着。
実際名前を呼ばれたのは集合時刻の10分前くらいだったので、集合時刻として指定されている時刻よりもさらに15分位前には会場に着いていた方が安心かと思います。
受験日は休日だったのですが、集合時刻前には受付前に受験者が沢山。
普段の日はスーツ姿の方が多かったですが、今回は全員私服でした。
名前を呼ばれたら受付に行き、身分証明書2点を掲示して、サイン等を行って鍵を受け取ります。
ロッカーに貴重品等を閉まったら、次に呼ばれた時に、メモ用ボードとペンの入った試験セットを受け取り、全員受け取り終えたら試験会場へ移動し、着席後に各自試験開始です。
試験時間は60分、PHP5技術者認定試験の場合は40問中28問以上正解で合格点となります。
コンピュータ試験で、画面に表示された問題に該当する答えの選択肢をマウスでクリックして選択する形です。
その際、画面左下に見直しチェックを入れる欄があるので、後で見直したい問題、後でじっくり解く問題にチェックを入れておくと確認時に確認しやすいです。
ただ、全問回答語の確認画面からどの問題へも移動可能なので、チェックを入れなかった問題はもう確認できないということは無いのでご安心ください。
ただ、コンピュータ試験はOSがWindowsで結構古いマシンを利用するので、試験中にフリーズするんじゃないかという変なドキドキ感は常にあります。。
「もうOK」となったら、確認画面の「テストを終了」ボタンをクリックすると試験終了となりますが、その後すぐに得点と合格/不合格が表示されます!
試験が終わったら退室して、試験セットを返却し、スタッフから試験結果の紙を貰って帰ります。
【 試験を終えて 】
Ruby技術者認定試験の場合は模擬問題付きの公式ガイドがあるため、それを中心に勉強をすることで合格点以上の得点を採ることができましたが、PHP5技術者認定試験の場合、「初めてのPHP5」は試験の公式ガイド目的で作られた本ではなく、この本以外も試験範囲に入っていることから、本中心の勉強だけでは少々厳しいかもしれませんが、合格点以上は採れると思います。
あと、PHPとデータベースを連携したシステム構築経験を持つ人は、教本無しでも合格点以上は採れるかと思います。
ただ、解らない問題があるというのは実際の試験時に不安だと思うので、実際に何かシステムを作っていろいろといじってみてPHPの癖を確認して知っておく必要があります。
コンピュータ試験は毎回問題がランダムで出題されるのですが、私の場合、合格点は確実と感じていても5問程回答が不安な問題がありました。
実際そのうち4問を間違えていました。
【 試験問題の傾向 】
「独学による合格率を75%、認定スクール受講生による合格率85%」に設定して問題が作られているため、合格点は採れるようになっていても、中には、ほとんど聞かない言葉が選択肢にひょこっと出てきたりもするため、その時の問題内容によっては100点満点を採るのが難しい場合もあると思います。
問題の雰囲気としては、「◯◯の説明として正しいもの(or 誤っているもの)を選択しなさい」という形式の問題が結構多く、選択肢の文章も多少長かったので、問題をよく読んで選択肢をしっかり見て答えないと間違える可能性が高くなります。
プログラムを組んで動かしてPHPの各機能、仕様の概念をしっかりと把握しえおくことで、この辺りの問題がスムーズに回答できるかと思います。
また、データベース関連で、INSERT、SELECT、UPDATE、DELETEを組み合わせたプログラムの実行結果の出力を選択させる問題もありました。
この問題は頭でだけ考えて解くと混乱するため、メモしつつ解きました。
一通り回答し終えた後に、時間の掛かる問題、見直しチェックを入れた問題を解いて、全問を再度確認。。という流れでほぼ試験時間いっぱい掛かりました。
この試験の上級試験が今年の9月に開始予定されているので、そちらも受験してみたいです。
PEAR::DBとPDOの各メソッド対応表
PHP5.1からは、データベース操作を行う際にPEAR::DBの他に、PDO(PHP Data Objects)が利用できるようになったので、両者のメソッドの違いを表にまとめてみました。
| PEAR::DB | PDO | |
|---|---|---|
| DBへの接続 | $db = DB::connect($dsn) | $db = new PDO($dsn,$user,$password) |
| SQL発行 | $stmt = $db->query($sql) | $stmt = $db->query($sql) |
| データ取得 | $stmt->fetchRow($param) $paramの種類: ・DB_FETCHMODE_ASSOC ・DB_FETCHMODE_OBJECT | $stmt->fetch($param) $paramの種類: ・PDO::FETCH_ASSOC ・PDO::FETCH_OBJ 他... |
| 疑問符 プレースホルダー | $stmt = $db->prepare( "select * from test_table where id>? and id<?") $stmt = $db->execute( $stmt, array($min,$max)) | $stmt = $db->prepare( "select * from test_table where id>? and id<?") $stmt->execute(array($min,$max)) 又は、 $stmt->bindValue(1,1) $stmt->bindValue(2,10) $stmt->execute() |
| 名前付 プレースホルダー | $stmt = $db->prepare( "select * from test_table where id>:min and id<:max") $stmt = $db->execute( $stmt, array(':min'->1,':max'->10)) | $stmt = $db->prepare( "select * from test_table where id>:min and id<:max") $stmt->bindValue(':min',1) $stmt->bindValue(':max',10) $stmt->execute(); |
| エラー | $db->getMessage() | try { $db=〜 } catch (PDOException $e) { $e->getMessage() } |
| エラー処理 方法指定 | setErrorHandling() | 無し |
| DBから切断 | $db->disconnect() | $db = null、又はunset($db) |






