いまさら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を送信するということになっているようだ。
いかにも正統派な機能。でもきっとプラグインを探れば、いくらでもトラックバックできるようなのがあると思う。

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

ping送信先

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

Serendipityの更新ping送信は、プラグインをインストールすることで実現できる、というのは以前に書いた。インストールするとデフォルトでいくつかのping送信先が設定してある。この設定のうち必要ないものを削除したり、常に利用したい送信先がある場合は、設定ファイルに記述しておくと楽になる。
設定ファイルは以下の場所にある。

(インストールしたディレクトリ)/plugins/serendipity_event_weblogping/

この中のservicesdb_ja.inc.phpというファイルに配列形式で記述されているので、これを適宜修正すればよい。使用言語によってファイルが分けられているんだ・・・。

テンプレート内で現在の日時

2007/02/05 | Smarty

Smartyテンプレート内での現在の日時の取得は{$smarty.now}でOK。
{$smarty.now|date_format:”%Y/%m/%d %H:%I:%S”}なんて感じでフォーマットして出力して使えばよさそう。これも時々忘れてしまうのでメモ。


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