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

PHP4でPHP5の関数を使いたい時に便利なライブラリ upgrade.php

管理していてPHP5へ移行したくてもすぐには移行できないサーバーも多く存在していると思います。
そのような環境の中で、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とセッションの関連性は分かりませんでしたが、解決して良かったです。

PHP5技術者認定上級試験開始は11月の予定

以前、公式ページを拝見した時は確か9月の予定になっていましたが、先程見たところ11月に変更されていました。
初級合格したからには上級も受けたいと思っています。
初級試験と同様、プロメトリックの試験会場で受けられるのが嬉しいですね。

PHP技術者認定機構 - 上級試験概要

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)

CakePHPをインストールしてブログチュートリアルに挑戦

MacのXAMPPに、フレームワークの中でも一番お手軽と言われている「CakePHP」を入れて、ブログチュートリアルに挑戦してみました。
CakePHPのオンラインマニュアルの嬉しいところは、「ブログチュートリアル」に沿って開発していくと、データベースと連携した簡単な更新管理システムが作れてしまう点です。

【参考】
CakePHPブログチュートリアル

上記ページに沿って試した際の注意点などを書いておきます。

●CakePHPをインストール
せっかくなので、gitを使ってリポジトリから。

$ git clone git://github.com/cakephp/cakephp.git

Cloning into cakephp...
remote: Counting objects: 117664, done.
remote: Compressing objects: 100% (23338/23338), done.
remote: Total 117664 (delta 94311), reused 114520 (delta 92321)
Receiving objects: 100% (117664/117664), 14.95 MiB | 1.08 MiB/s, done.
Resolving deltas: 100% (94311/94311), done.


私は、/Applications/XAMPP/htdocs/cakephpに置きました。

●ブログチュートリアルを始める前に
http://localhost/cakephpにアクセスしてみてください。
以下のようにいろいろ警告や注意が表示されると思います。
CakePHP初期画面
これは、まだcakephpの環境設定が終わっていない状態だからです。

●ブログデータベースの作成
データベース、テーブル、フィールドの照合順序を「utf8_unicode_ci」にしておかないと、日本語が文字化けしますのでご注意。

●Cakeのデータベース設定
CakePHPのデータベース設定用ファイルは、app/config/database.php.defaultにあるので、これをコピーして利用します。

$ cp app/config/database.php.default app/config/database.php

database.phpの設定内容は、先ほど作成したデータベースに合わせます。



●追加の設定
設定1:パーミッションの設定

Warning (512): /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/tmp/cache/ is not writable
Warning (512): /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/tmp/cache/persistent/ is not writable
Warning (512): /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/tmp/cache/models/ is not writable


CakePHPをインストールするにはcakephp/app/tmp含むtmpフォルダ内全てに書き込み権限が必要です。
Webサーバーのユーザー名を調べて、ディレクトリにそのユーザーの所有権をを与えるのが一番と書かれてあるので、Webルートに以下の内容を書いたwhoami.phpを作成して実行し、

<?php echo `whoami`;?>



表示されたユーザー名でtmpフォルダに所有権をもたせます。

$ cd /Application/XAMPP/htdocs/cakephp
$ chown -R nobody app/tmp



設定2:セキュリティパスワードの変更

Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application
Notice (1024): Please change the value of 'Security.cipherSeed' in app/config/core.php to a numeric (digits only) seed value specific to your application


Noticeですが気になるので設定しておきます。
デフォルトのままだとダメということなので、デフォルトの文字列を適当に削ったものでもOKです。

$ vi app/config/core.php

Security.saltと、Security.cipherSeedに設定してある文字列を適当に変更してください。



ここまで設定して先ほどのページにアクセスすると、WarningとNoticeが消えています。
CakePHP初期設定完了

後は書かれてある通りにファイルを作っていけばOKです。
完了するとこのようなものが出来上がります。
CakePHPブログチュートリアル完成
タイトルクリック、Add Post、Edit、Delete、それぞれちゃんと動くかの確認を忘れないでください。

CakePHPはMVCモデルに忠実な造りになっていて、それぞれのファイル同士の繋がりやデータベースとの連携も把握しやすいという印象を受けました。
プロフィール

星羽(榎田)

Author:星羽(榎田)
PHPエンジニアがRuby、PHPなどをいじった時の備忘録

最新記事
最新コメント
最新トラックバック
カテゴリ
スポンサードリンク
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。