PHPフレームワークのZendを使用している。
最近やっと日本語マニュアルが整備されたのだが、
とある事でドハマって解決したのでご報告。

Zend_Auth という便利な認証クラスがある。
認証結果を独自のストレージクラスに格納し、
getIdentity() にてIDを取得できる。
マニュアルにはID以外のデータもストレージに格納できるとあり、
実際できるのだが、ここで困ったことが発生する。

getIdentity() の値が変わってしまうのだ。
通常はString型でユーザーIDが返ってくるだけだが、
上記のマニュアル通りにすると、stdClass型で返って来ちゃうのである。
というか、格納した型で値が返ってきてしまう。 配列を格納すれば配列が返ってくる。

$result = $this->_auth->authenticate($adapter);

if ($result->isValid()) {
    $storage = $this->_auth->getStorage();
    // DbTable を使用して認証。結果をストレージ。
    // でもこれやっちゃうと...
    $storage->write($adapter->getResultRowObject(array(
        'username',
        'real_name',
    )));
}

// これがダメになる。
// $username = $this->_auth->getIdentity();

// こーしないといけない。
$username = $this->_auth->getIdentity()->username;

マニュアルにしっかり書いとけゴルアあああ。

数時間ムダにしたぞ。くっそおおお。

HT Maison
この書体は HT Maison — 欧文フォント買うなら MyFonts