init()とpreDispatch()の使い分けは以下の通りです。
ZendFramework 1.12のマニュアルより抜粋
init() メソッドは、主にコンストラクタを拡張することが目的です。 一般的に、コンストラクタはオブジェクトの状態を単純に設定しなければならなくて、 多くのロジックを実行してはいけません。 これは、コントローラで使用されるリソース(例えばモデル、オブジェクトの構成、その他)を初期化すること、 またはフロントコントローラ、ブートストラップ、 またはレジストリから取得される値をアサインすることを含むかもしれません。
preDispatch() メソッドは、 オブジェクトまたは環境(例えば、ビュー、アクション・ヘルパー、その他) の状態を設定するために使うこともできます。 しかし、その主な目的は、リクエストされたアクションをディスパッチしなければいけないかどうか 決定することです。 もししないのならば、別のアクションに _forward() するか、 または例外を投げなければなりません。
マニュアル原文ママですが、理解して頂けたでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。