guesswork、イカス。
Akelosにつきあうのに少し疲れたので、guessworkを見ることで気分転換を図る。
多分PHP4のFWとしてはかなり共感できるコンセプト。
一方で、シンプルさを保つためにデータベースアクセスやユーザー管理などの機能は一切備えていません。これらの機能はPEAR等の既存ライブラリを利用してください。
http://classic.guesswork.jp/about/
結果としてフレームワークの枠組みによる検証とPHPコードによる検証が混在してしまい、またPHPプログラマに「検証用設定ファイル」のような(独自で使い回しのきかない)知識を要求することにもなるため、guessworkでは「コーディングレスな検証」を避けています。
http://classic.guesswork.jp/documents/gettingstarted_validation.php
なんと美しい割り切り、身の引き方。わびさびが感じられて檄萌え。
続きを読む現在位置のURL
例えばログイン認証をかけたページに対して、ログインしてないユーザーがアクセスしたとき、ログインページを表示します。で、ログインに成功したら、もともとユーザーがアクセスしてきたページにリダイレクトさせると思うのです。
そういったときにいわゆる「戻り先URL」というのが必要になってくるのですが、FWに依らずこれを生成するコード、というのがあんま見かけないです。
試しにこんな感じで作ってみました。
function current_url() { $_url = $_SERVER['REQUEST_URI']; $_http_host = $_SERVER['HTTP_HOST']; if (empty($_http_host)) { $_http_host = $_SERVER['SERVER_NAME']; } $_server_port = $_SERVER['SERVER_PORT']; $_schema = 'http'; if ($_server_port == 443) { $_schema .= 's'; } $_port = ''; if ($_server_port != 80 && $_server_port != 443) { $_port = ':' . $_server_port; } return $_schema . '://' . $_http_host . $_port . $_url; }
で、結構この「戻り先URL」として現在位置のURLを算出して渡す、という挙動は多いと思うのですが、なんか、FWとして実装してるのってあるんですかね?最近のはmod_rewrite併用が多いため、遷移先のURLを生成する、というのは多いようなんですが、逆に現在位置のURLを取得するって処理、どうなんでしょうかね・・・。
続きを読むFatal error: Cannot redeclare class pager in ... vendor/pear/HTML/Pager/Pager.php on line 53
Akelosはデフォでvendor/以下にPEARやADODBなどのライブラリファイルを保持してます。
まぁ、これがシステム側に入っているのと干渉・衝突すると、お題のようなエラーが発生します。
例えばうっかり
require_once('Pager.php');
とかしちゃうと、システムのPEARに入っているのが取られちゃったりして、しかもその後、Akelosのpagenation_helper()ではAkelosの保持するPagerがrequireされちゃうので、ディレクトリの位置が異なるためrequire_once()の効果もなくなります。
っつーか、いくらメジャーバージョンが上がったとはいえディレクトリ位置を移すPEARのPagerもどうかとは思いますが。
じゃぁどうするか?AK_APP_VENDOR_DIRを使ってフルパス指定すればよいのか?
否。
例えばPager.phpそれ自体の中では、フルパス指定でなく、include_pathを前提としてrequireしている「かも」しれないからです。Pager.phpでなくとも他のライブラリではあり得るかもしれません。
include_pathからシステムのPEARを外すのも良いですが・・・。