On Wednesday 27 April 2005 1:28 pm, Zeev Suraski wrote: > At 20:12 25/04/2005, Christian Schneider wrote: > >[snip] > >But then again I think the whole thing is typical OO bloat anyway and > >that's why I don't want to have language features added for it (-:C > > I wholeheartedly agree. > > Zeev
I remember similar arguments being made about most of the new OO features in PHP5. Out of interest, how is this more bloated than storing doc comments in memory? If you are worried about removing bloat, I suggest removing doc comments from the engine. You are already storing the filename and linenumber where elements are defined, retrieving associated doc comments could happen in userland and a lot of memory would be saved. Or again, how is this more bloated than named parameters? There are reasons why modern languages provide this feature: because it's useful and because you cannot emulate it. And no, rigidly enforced variable naming schemes are not a substitute - what about inheritance? multiple declarations?. Of course if you think that is a substitute, then why not go the whole hog and require classes to declare the methods listProperties() and listMethods() and do away with reflection entirely? That's just OO bloat too. When you need a feature like this and it doesn't exist, the workarounds lead to - fragile classes as consumer classes need to know implementation details of the classes they consume, rather than being able to use reflection. - bloat in the application code. - disconnect between the declaration of an element and the information the class wishes to provide about the element. Imagine if public/private/protected didn't exist. I can imagine a ghastly workaround which would work, but you wouldn't want to use it. Same goes for attributes: they are an intrinsic property of an element, and to declare them somewhere else in the code makes no sense. The implementation requires as much space in the property_info struct as doc_comment, and twenty lines of c code. Not a lot. And the work's been done for you already! How about a deal: I'll remove the doc_comment code from the engine and put it into the reflection api if you'll accept my attributes patches. You'll end up with a faster engine which uses less memory, and the rest of us will get a seriously useful new feature. How about it? Duncan