On Sep 2, 2013, at 15:54, "Lester Caine" <les...@lsces.co.uk> wrote:
> Parameter hashes are what we have been converting everything TO because it was > supposed to be the 'proper way to do it' a few years back. If you have lots of parameters to pass in, the better solution is to use an object, which lets you formally define what is required to be passed in. The parameter hash, or the parameter block as it was known in decades past, is a compromise solution that was widely used before OOP really caught on. In this context, it is essentially the same thing as a simple object but without the formal definition. The lack of formal definition is what makes it a terrible idea because it obfuscates the parameters of the function. If you hand off the code to someone else to use, they must to look at the implementation to see how it works to figure out what to pass in. Oh, there may be separate docs, but they can't be auto-generated, and we all know how well code docs are kept up-to-date when they're not auto-generated. Plus, PHPDoc doesn't support parameter blocks, which means that IDEs can't offer the same level of assistance with code-completion that they offer for both objects and straight parameters -- another huge downside. Parameters were invented as an abstraction around passing raw, untyped and unnamed stacks of data. Parameter blocks take us back to that. Back to the topic, I like what Stas has proposed. Further, I don't see named parameters as replacing the utility of default parameters. For long parameter lists, named parameters would usually make more sense to use, I think, but for medium lists, I think the default keyword is much cleaner because it doesn't require doubling or tripling the length of what you type for the parameter list to ensure you're getting the default value for a parameter. And where named parameters are overkill, it keeps the focus of anyone reading the code firmly on the values, not the parameter names. In other words, the two features complement each other, with one or the other being better in different contexts. I don't get a vote, but if I did, I'd say implement what Stas has put forth, and if named parameters can come into the picture at some point, implement that, too. -- Bob Williams Notice: This communication, including attachments, may contain information that is confidential. It constitutes non-public information intended to be conveyed only to the designated recipient(s). If the reader or recipient of this communication is not the intended recipient, an employee or agent of the intended recipient who is responsible for delivering it to the intended recipient, or if you believe that you have received this communication in error, please notify the sender immediately by return e-mail and promptly delete this e-mail, including attachments without reading or saving them in any manner. The unauthorized use, dissemination, distribution, or reproduction of this e-mail, including attachments, is prohibited and may be unlawful. If you have received this email in error, please notify us immediately by e-mail or telephone and delete the e-mail and the attachments (if any). -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php