いまさらmojavi3

2007/02/14 | mojavi3

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

mod_rewriteネタその2

2007/01/05 | mojavi2

mojaviで使うmod_rewriteだけど、少しだけ進展させてみた。
こんな内容。

RewriteEngine On

# 実在ファイルへのアクセスはそのまま流す
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* – [L]

#モジュールだけ指定されていた場合はactionはindexを指定
RewriteRule ^([^/]+)/?$ – [C]
RewriteRule !^rulebase/? – [C]
RewriteRule ^([^/]+)/?$ /index.php?module=$1&action=index [L]

#モジュールとアクションだけが指定されていたら(スラッシュの
#有無にかかわらず)
RewriteRule ^([^/]+)/([^/]+)/?$ – [C]
RewriteRule !^rulebase/? – [C]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?module=$1&action=$2 [L]

#後ろにスラッシュがあって、さらにパラメータが指定されたら
#とりあえずモジュールとアクションだけ書き換え
RewriteRule !^rulebase/? – [C]
RewriteRule ^([^/]+)/([^/]+)/(.*) /rulebase/$3?module=$1&action=$2

#次にパラメータを書き換えて、パラメータの数だけ繰り返す
RewriteRule ^rulebase/([^/]+)/([^/]+)(.*)$ /rulebase$3?$1=$2 [QSA,N]
RewriteRule ^rulebase/?$ /index.php [QSA,L]

いちおう動いている模様。
これで進めることにする。

mojaviのURLを少し短くするmod_rewrite

2006/12/29 | mojavi2

検索エンジン対策のためにPATH_INFOを使ってプログラムを使用していることを隠蔽するというのは、mojaviでも設定ファイルひとつで対応可能だ。でもこの方法だと、URLが結構長くなってしまう。例えばmoduleAのactionBにアクセスするには、以下のような具合だ。

/index.php/module/moduleA/action/actionB

これをさらに短くするためにURL書き換え機能(mod_rewrite)を使うわけだが、このmod_rewrite、強力なURL書き換え機能を持っているだけに、設定の記述も難解だ(今まではあえて避けてきた)。
たまたま必要に迫られて検索をかけると、見事なのを見つけた。以下のように書いておけばいい。

RewriteEngine On
# to avoid problems with exsisting files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* – [L]
# rewrite broken relative image paths
RewriteRule ^.+(images|scripts|files)/(.*)$ /$1/$2 [L]
RewriteRule !^ind/? – [C]
RewriteRule ^([^/]+)/([^/]+)/(.*) /ind/$3?module=$1&action=$2
RewriteRule ^ind/([^/]+)/([^/]+)(.*)$ /ind$3?$1=$2 [QSA,N]
RewriteRule ^ind/?$ /index.php [QSA,L]

この設定により、上記のURLが以下のようになる。
/moduleA/action1

2つを見比べると短さは一目瞭然!。
/index.php/module/moduleA/action/actionB
/moduleA/actionB

そしてパラメータ(QUERY_STRING)を指定する場合も、以下のように指定すればOK。
/moduleA/actionB/param1/value1/param2/value2・・・

出展はこちら
これによるとパラメータを10以上つけるようなことがある場合は、以下の一行を付け加えておく必要があるとのことだ。

RewriteOptions MaxRedirects=25

よくはわからないけど、[QSA,L]の記述により、パラメータの個数だけ内部的に(mod_rewrite複数回呼び出しみたいな・・・)再読み込みするらしい。んで、再読み込みの回数の上限は9回だから、パラメータが9より多い場合は上記の1行で上限回数を増やす必要があるようだ。

すばらしい。
まさに「URLを操作するためのスイス製のアーミーナイフ」だ。

ActionChainは引数が渡せる

2006/10/20 | mojavi2

最近まで知らなかった(単にソースを熟読していないだけなのだが)。
ActionChainは引数を渡すことができる。
registerする際に・・・。

$ac=new ActionChain();
$ac->register(‘登録名’,’モジュール名’,’アクション名’,array(‘引数名’=>’引数値’));

これだけでいい。
しかし・・・mojavi2って最近は使っている人いるのだろうか。
今はPHPフレームワークの過渡期。そろそろ新しいものにチャレンジする必要もありそう。Zendとかね。

PATH_INFOが取得できないときは

2006/06/18 | mojavi2

これも使えるネットねたなのだが・・・。
mojaviでは検索エンジン対策としてPATH_INFO形式を使用するようにしているけれど、使えるネットでは使えなかった(使えねー)。
調べたらわかった。apacheの設定で可能になるようだ。
httpd.confに以下の一行を書き加えて解決した。

AcceptPathInfo On

一件落着。


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