Why not just returning null when a method does not exist? Actually CALLING a non-existing method should be treated as an error...
On Fri, 24 Dec 2004 18:47:26 +0100, Christian Schneider <[EMAIL PROTECTED]> wrote: > Sebastian Bergmann wrote: > > You assume wrong. My point is that you should not use getMethod() when > > you do not know whether or not the method exists. > > Ok, let's look at the options then: > > 5.0 - getMethods() [sure, you could probably use clever tricks to make > this shorter but the general clumsiness will remain]: > > foreach ($reflectionClass->getMethods() as $m) > { > if ($m['name'] == "foo") > { > $method = $m; > break; > } > } > > 5.1 - hasMethod(): You were saying before that we don't need this and > that's what I was basing my asumption on ;-) If we DO have hasMethod() > then it is IMHO still unnecessarily complicated: > > if ($reflectionClass->hasMethod("foo")) > $method = $reflectionClass->getMethod("foo"); > > Call me old-fashioned but I like the assignment-as-truth-value style > where you combine the assignement and check into one statement. De > gustribus non est disbutandum though :-) > > > Calling getMethod() for a method that does not exist is an error and > > should be consistently treated as such by raising an exception. > > I disagree. The same could be said for getenv(). It's not part of a > so-called OO API but it's the same operation: Return a key's value. It's > half-way down the Python road where accessing undefined array indices > causes exceptions. I like my PHP like my coffee: Simple and sweet :-) > > Let me look at the problem from another point of view: What would your > error handling with exceptions look like? > > If you do things like > $reflectionClass->getMethod("foo")->... > then you have to catch your exception somewhere. Otherwise there is no > difference to returning null as the program aborts. Now if you catch it > in the same function you could as easily check for null. If on the other > hand you're NOT catching it there your application has to know how to > react to an unknown method. This can quickly lead to encapsulation > problems. My point being that exceptions are very hard to handle > properly and people disagree on how to do it (as seen in this thread) so > they should be used sparingly and seldom be forced onto people. That's > all I'm saying :-) > > Happy holidays, > - Chris > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php