Sorry, mis-click. Quoting Josh Fuhs <[EMAIL PROTECTED]>:
> If I'm not mistaken, Java does not allow calls to static methods via object > instances. It simply doesn't make sense to couple the unecessary object > instance > into a method call in which it has absolutely no bearing. > > If the object has nothing to do with the operation, then there's no point for > it > to be in the syntax. I am completely in favor of a > > $stringName::staticMethod(); > > type call if this hasn't already been done. > Continuing on... Consider the following piece of code: class Foo{ /* It is possible to register something with an instance. */ function register($param){ .... } /* It is possible to register something with the class. */ static method register2($param){ } } /* Assume the class definition is separate from this. */ $instance = new Foo(); /* Hmm, the code reads register something, but I can't really be sure of the meaning without referring to the documentation. */ $instance->register2($param); When reading OO (or arguably any) source, one should be able to describe what is happening simply by looking. A method describes what it is doing by its name. If a class method name makes sense for an object, a point of confusion arises for someone who is maintaining the code. C++, though powerful, can hardly be considered the authority on OO behavior. Multiple inheritance and a few other features that it incorporates have not been accepted into the mainstream OOPLs for a reason. Like multiple inheritance, static method invocation via an object instance should be considered a bad practice. Josh > Quoting Art Hundiak <[EMAIL PROTECTED]>: > > > On Friday 20 February 2004 20:23, Herr Witten wrote: > > > Well, calling a static method from an instance breaks down the logic. > > > If it is static, then the instance has absolutely no bearing when > > > calling it. Therefore, it logically makes sense to call only from the > > > class name. > > > > > > Moreover, making a distinction between the method calling syntax begins > > > to make the distinction between class objects and instance objects. I > > > have a class which deals directly with classes and their static methods > > > as if they are objects. This is a powerful notion that still needs more > > > support in the Zend engine. > > > > > > The call for static method should be: > > > > > > ClassName->method(); > > > > > > Herr Witten > > > > > > > C++ allows $a->bar() when bar() is a static method (yes, it is called > > > > in a static context there too). > > > > > > > > IMO, there should be no error, warning or notice here. > > > > Regardless of the final implementation, I think access to static methods > and > > > > static class variables should be consistent. Currently, you cannot access > a > > > > class variable via an object instance. > > > > And for what it's worth, I see no reason why static methods cannot be > called > > > > from objects. Follow Java/C++ in this case. > > > > -- > > 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 > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php