ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

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を取得するって処理、どうなんでしょうかね・・・。

続きを読む

Helperをvimで編集してると、swapファイル(.swp)が取り込まれて表示される。

なんだ、こりゃ。

時々出てて、「なにこれ〜〜???」と。出たり出なかったりしてた。で、よくよく目をこらすと、一番上に「b0VIM」とかある。
・・・ひょっとして、これvimのswapファイル?

試しにvimを閉じて.swpファイルが無くなると、直った。・・・ありえねぇ。
↓原因。

続きを読む

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を外すのも良いですが・・・。

続きを読む