Re: Re: __autoloading and functions
| From: | Terje Slettebø | Date: | Tue, 12 Sep 2006 05:03:48 +0000 |
| Subject: | Re: Re: __autoloading and functions | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-25628@lists.php.net to get a copy of this message | ||
>On 9/11/06, Terje Slettebø <tslettebo@broadpark.no> wrote:
>> Please, people: The availability of free (non-member) functions in PHP
(as
>> in C/C++) is one advantage it has over Java, where everything _has_ to be
a
>> class. So in Java, instead of being able to write "sqrt(<number>)", you
have
>> to write "Math::sqrt(<number>)". Always.
>Actually, Java recently added static import to deal with that very
>annoyance.... ;)
Right. Well, to me, having to wrap everything in a class, just because you
don't have free functions, seems like more of a workaround than anything
else, and the static import a "kludge" to make that less inconvenient
(conceptually, it doesn't make a lot of sense to me to "import" some class's
static members into a context...). Besides, it forces you to define
everything in _one_ file (unless _that_ has been changed, as well).
I'm reminded of that, after having learned Java at college, and taking up
C++ again, after it, I had to "deprogram" myself of "Javaisms": I tended to
use a class for everything, even if it made my design more complex and
tighter coupled than necessary. For example, if I needed some functions that
didn't naturally belong in a class (such as various "utility functions"),
I'd wrap them as static members in a class called "Utility". When reading up
on C++, again, I realised that this was absolutely not necessary: You could
simply define them as free functions in a namespace called "utility"... That
way, they may be called unqualified (if "imported" with "using"), and may
span several files.
Regards,
Terje