CakePHP のコンポーネントの startup() は beforeFilter() より後

CakePHP で app_controller.php の beforeFilter でコンポーネントを使った共通する処理をしようとしてハマった。

エラーはこんな感じ

Fatal error: Call to a member function hoge_function() on a non-object in ...

独自のコンポーネントを作成する :: コンポーネント :: CakePHPによる開発 :: マニュアル :: 1.3コレクション :: The Cookbook

initialize メソッドはコントローラの beforeFilter() メソッドの前に呼び出され、startup() はコントローラの beforeFilter() メソッドの後に呼び出されます。

ということで、beforeFilter() の時点ではコンポーネントの startup() は実行されていない。

ほかのやり方がありそうだけど、とりあえず処理をコントローラのアクションに移して対処。