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