慢性的な眠気も手伝って分析画面に関して考えることが少し億劫になっているため、今日はbowlingScoreAdminのファイルを改造するという方向へ逃げた。

改造といっても、要はxml宣言から<head>部分をすべてcommon.incファイルにまとめ、phpで書き出すようにするだけだ。将来的にファイルが多くなったときの保守管理対策である。

基本部分は会社のウェブサイトから拝借。必要な変数をあらかじめ本体ファイルに記述しておき、common.incに記述した関数内でグローバル変数として扱って処理。別に大したことではない。

ローカル環境でうまくいったのでいざレンタルサーバーへ。

Fatal error: Call to undefined function unixtojd()

無情にも、お馴染みの大魔神Fatal error様が。

これだからレンタルサーバーは、、、

調べてみると、

レンタルサーバーで PEL が動かない問題
http://akabeko.sakura.ne.jp/blog/2009/11/%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7-pel-%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C/

この記事の冒頭でも触れたように、PEL を試した環境は全て Windows だった。つまりは何もしなくてもカレンダー関数が使用できたのだが、他の環境では説明どおりに PHP をコンパイルするか、カレンダーモジュールを導入して php.ini を書き換える必要がある

因みに利用しているレンタルサーバーはさくらインターネットのスタンダードコースだが、恐らくは他社のサービスでも発生するだろう。対策方法がサーバーの PHP を弄るものしかないのも困りものだ。

ということだった。

PHP本体および拡張モジュールはカレンダー関数がシンプルなC言語の処理として実装されており、依存する処理も少ないので、基本的にC言語の処理をそのまま移植し、言語間の表現や型の差異を解決すれば関数をPHPで自作できるみたい。

でも、必要に迫られているワケでもないし、なんならdate()関数で何とかなるだろうから、今回はパス。

unixtojd()およびjdtounix()等が使えないことだけ頭に入れておこう。いずれC言語を勉強するときに挑戦してみよう。

また、コードをもっとスマートにすべく、これまで使ってこなかった(あえて避けてきた)コード記述方法に変更してみることにした。

具体的には、
・≪if文の省略形≫ if(条件式) 命令;
・≪条件演算子(三項演算子)≫ (条件式) ? 命令A : 命令B;
・≪複合代入演算子≫ 変数X += 変数Y;
の3つ。

これらはいずれもif文や普通の代入演算子を用いれば記述することができる。「コードの一貫性」を理由にこれまでこのような特殊(?)な処理はあえて行わなかったが、(とか言いながら、インクリメントは普通に使ってたけど。だってfor文で使うもん、、、)このままではPHPの知識が少ないまま過ぎてしまいそうなので、他人に迷惑をかけない自分のサイトでこれからもいろいろチャレンジしていこうと思う。

今日はアメトーークを見終えたところで時間切れ。score.phpの関数部分まで書き換え完了。続きは明日、カブちゃんのお世話が終わってからやりましょう。

今日はもう寝ましょうね。