On 3/15/2016 11:02 PM, Yasuo Ohgaki wrote: > Hi Scott, > > On Wed, Mar 16, 2016 at 2:40 AM, Scott Arciszewski <sc...@paragonie.com> > wrote: >> Question: If this extension is adopted, which syntax would you prefer? >> >> \Sodium\func() >> Sodium::func() >> sodium_func() > > I prefer both of > > Sodium::func() > sodium_func() > > IMO, we are better to provide both OO and procedural API which have > identical features. i.e. I prefer multi paradigm programming language. > It would be natural for PHP since PHP was born as procedural language > and evolving as OO. > > Regards, > > -- > Yasuo Ohgaki > yohg...@ohgaki.net >
Providing both only makes sense if you receive an object on which you can perform more operations. It is a different situation if everything that the extension provides is always a function in a mathematical sense (same input produces single output). I love multi-paradigm languages but that does not mean that everything needs to provide every paradigm; you actually end up with a mess in such cases. We have good examples where it makes sense [1] and bad examples where it makes no sense [2] together in a single extension. The major reason to provide an object is to encapsulate some information and/or state that you can pass around (dependency injection) and that has some kind of behavior. This is most certainly not the case in [2] because it consists only of previously mentioned mathematical functions. [1] is different, it can be passed around, preconfigured with some state (a specific locale and pattern). It would become even more useful if one could instantiate it only with a locale and pass it around, prepared to handle multiple patterns; but that's another story. [1] https://secure.php.net/class.messageformatter [2] https://secure.php.net/class.locale TL;DR Providing Ext::fn() and ext_fn() for everything only creates a mess. Decide on one way and decide on the way that makes sense. Multi-paradigm does not mean "provide/use everything, always" it means "provide/use one paradigm as it make senses from multiple ones"; that is also where it takes its strength from. -- Richard "Fleshgrinder" Fussenegger
signature.asc
Description: OpenPGP digital signature