オートローダ

2007/02/16 | mojavi3

mojavi3(PHP5?)で採用されているオートローダ。ちょっと調べてみた。
プログラム中でクラスを使用する際に、あらかじめそのクラスがどのファイルに書かれているか設定しておいて、実際にそのクラスが呼び出されたら、自動的に設定ファイルから、必要なファイルを読み込むということのようだ。つまり、今まではたいていスクリプトの頭でrequire文を記述したけれど、これだと実際にクラスを使用しなくてもコンパイルしてしまうのでオーバーヘッドが大きい。ということで実際にクラスが呼ばれたら、勝手に元ファイルを読み込むということのようだ。
確かにプログラムが大きくなる傾向があるから、こういう処理は大切なのだとは思う。でも所詮PHPじゃん、そんなこと気にせずやりたい。だって大規模な開発はJavaでやればいいんだから。
PHPはJavaに近づこうとしているようにしか見えないけれど・・・。PHPって手軽に使える言語だからいいのに。
ま、使い方はわかった。あとはMDB2とQuickFormだな。

mojavi3とmdb2

2007/02/15 | mojavi3

mojavi3になってデータベースも標準で扱えるようになった。「すばらしい」と思ったのもつかの間、それを使おうとすると、また低級言語にもどらないといけない。つまりライブラリが使えないということで、直接mysql_queryなんて関数を使わないといけないようだ。んでちょっと調べて、行き当たったのがこちらのページ

対象はPEAR::DBだけど、これならMDB2に応用可能だろう。このサイトは諸々かなり詳しくmojavi3について書かれているので、mojavi2のことがある程度理解できていれば、ここを読みさえすれば習得するのは容易だと思う。しかも都合のいいことにQuickFormやSmartyの組み込み方もある。

来週クライアントとの打ち合わせがあるので、少しくらいmojavi3を使えるようにしておきたい。データベースが使えてQuickFormが大丈夫になれば、あとはいくつかライブラリをそろえれば何の問題もない。この数日が山だなぁ。

いまさらmojavi3

2007/02/14 | mojavi3

何を今更という気はしないでもないがmojavi3をやることになった。
第一の理由は、とある案件を受注できる可能性があり、その環境はPHP5であること(mojavi3はPHP5対応)。
第二の理由は、その案件の規模が比較的大きいこと。小さいものならあえてPHP5の案件は受けない(そしてまた、興味がある会社からの案件依頼ということもある)。
第三の理由は、他のフレームワークは使ったことがないこと。他にもフレームワークは数あれど、経験のあるフレームワークといえばmojaviだけ。もちろん他のフレームワークはフォーム生成等の諸々充実しているけれど、mojaviはそもそもフレームワークのためのフレームワーク。本当に好きなツールを組んで使うのがmojaviのやり方だから。
mojavi3(そしてPHP5)を始めるにあたっていろいろ気をつけないといけないらしい。オートロード機能とか・・・なんか諸々。とりあえず作業をするにあたって、メモを残していくことにした。乞うご期待?!。

eval関数

2007/02/12 | マイPHPメモ

だいたいどんな言語でも存在するeval関数についての話題。

もともとPHPはシフトJISはサポートしていない。プログラムを設置する際に、その発注先はプログラムの知識がないことが多いし、しかもそういうクライアントに限って「あとで自分たちでも改変できるように」なんて無茶なリクエストをすることが多々ある。そういうクライアントはたいていの場合文字コードに関しての知識はないに等しい。
そんなときにeval関数は便利だ。設定ファイルをシフトJISで書いてしまい、それを読み込む際に文字コードを変換して、さらにevalしてPHP化してしまうわけだ。例えば・・・。

設定ファイルを以下のように記述する(ファイル名「setting.txt」)。
define(‘MIDASHI1′,’見出し1′);

ここで設定ファイルには<?phpといったお決まりの文句を書かないことがキーポイントだ。でもって、このファイルは誰でも修正できるようシフトJISで書いておく。
このファイルをPHPプログラムから以下のようにして読み込めばOKだ。

<?php
$setting=file_get_contents(‘setting.txt’);
$setting=mb_convert_encoding($setting,’EUC-JP’,’SJIS’);
if(@eval($setting)===false){
(PHP化失敗)
}else{
(処理を書く)
}
?>

ここで@eval($setting)===falseと「===」でくくるのがミソ。元のファイルに構文エラーがなかった場合に、元のファイル中にreturn文がなかった場合、@eval($setting)はNULLを返してしまうからだ。
if(!@eval($setting){〜}なんて記述をしてしまうと、永久に???の世界の中にとどまることになってしまうので注意が必要だ。

諸刃の刃ではあるのだが、eval関数というのは便利だ。

トラックバックping

2007/02/07 | SNS/CMS/ブログ

serendipityで記事投稿の画面にはトラックバックURLを入力するところがなかった。気にもしていなかったが、記事を投稿して初めてわかった。
記事中にURLリンクの記載(<a href=”>)があったらそのURLがトラックバックを受け付けているかどうか検査して、受け付けている場合はトラックバックpingを送信するということになっているようだ。
いかにも正統派な機能。でもきっとプラグインを探れば、いくらでもトラックバックできるようなのがあると思う。

でも初心者にとってはいいこと。意識しなくてもトラックバックが使えるのだから。これが本来のトラックバックのあるべき姿なのだから、ブログサービス業者は見習って欲しいもんだ。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net