One of the patterns you find throughout CakePHP is what I call the “Multitype Parameter” pattern (maybe there exists an “official” name for it, I don’t know). It allows you to either pass a string or an array as a parameter to a function. An example:

$this->redirect('/users/add');

or

$this->redirect(array('controller' => 'Users', 'action' => 'add'));

As usual in software engineering, using such a pattern comes with trade-offs. On the one hand you get a flexible interface you can extend very easily by adding new keywords, and which is handy for the user as in the usual case he can simply pass a string whereas in other cases he can pass an array. On the other hand you have to write more code and it becomes more difficult to override a method using this pattern.

I don’t use that pattern often in my own stuff, but maybe it will be helpful to you.