> The extra params aren't really _that_ bad. Okay, I'd like to reset the conversation a bit here. It's clear that the current API does not fit the problem domain very well. Tacking on more parameters only creates a bigger mess. Six parameters to a stateless function call is a completely incoherent API. It's unusable without consulting the manual. I think we need a completely different approach. Let me propose something else that won't break BC in any release and results in an API that's actually sane:
class CryptoContext { private $mode; private $password; function __construct($mode, $password) { $this->mode = $mode; $this->password = $password; } function encrypt($data) { // ... return $encryptedData; } function decrypt($data) { // ... return $decryptedData; } function setOption($option, $value) { // ... } // more methods here to do anything you need } Thoughts on a stateful object API here? Personally I find this much more coherent than anything that's been proposed so far and it could be implemented without affecting existing functionality.