Hi Stanislav.
Thank you for replying. I agree that PHP can be different from other
languages, but i think you agree that a code like this just feels wrong:
class Cube {
function weird() {
echo Duck::foo();
}
}
class Duck {
public function foo() {
echo 'My class is: ' . get_class($this);
}
}
$rubik = new Cube;
$rubik->weird(); // Output: My class is: Cube
One would never guess that $this inside a method of Duck could be an
instance of Cube. It might look silly as an example. But in the real world
someone could think a method is static when its not, and call it,
introducing a bug on the application.
I don't see any case where this behavior is useful. And even it there was
one, it could be achieved using magic methods __call() and __callStatic().
Thank you all,
*Carlos Rodrigues*
[email protected]
2014-11-28 20:59 GMT-02:00 Stanislav Malyshev <[email protected]>:
> Hi!
>
> > It confuses programmers that came from other languages, prevent APIs from
> > having meaningful names on static methods and have no other benefit than
> > supporting PHP 4 code.
>
> I think this notion of "confuses programmers" sometimes goes too far,
> and this is one of the examples. PHP prides itself about having low
> barrier to entry, but that doesn't mean you can refuse to learn anything
> at all about it and PHP should change to match that.
>
> There's nothing wrong in having static and non-static functions in the
> same namespace, and many languages do the same. Some do not, so you
> should just remember PHP is the one which does.
> --
> Stas Malyshev
> [email protected]
>