I agree on that, there is certainly something wrong when you’re formatting data to send as a response in your controller. It should happen in the View instead and as Stefan said, it could well be considered a design flaw.

But what I find even more hideous is the fact that ZF actually uses an exit; statement to break out of the “normal chain”. I can imagine it takes quite a while to debug this, and it makes absolutely no sense.