Edit report at https://bugs.php.net/bug.php?id=40837&edit=1
ID: 40837
Comment by: mac at macnewbold dot com
Reported by: nick dot telford at gmail dot com
Summary: static and non-static functions can't have the same
name
Status: Not a bug
Type: Bug
Package: Class/Object related
Operating System: Irrelevant
PHP Version: 5.2.1
Block user comment: N
Private report: N
New Comment:
[email protected] :
What would the impacts be of deprecating static calls to non-static methods?
They would seem to not make much sense, since any uses of $this inside the
method (which would be pretty typical since it is a non-static method) would
fail with "Fatal error: Using $this when not in object context". What is the
value of being able to attempt a static call on a non-static method?
Previous Comments:
------------------------------------------------------------------------
[2012-09-10 03:00:14] [email protected]
For the record, there's no way this can be implemented as it stands: for
backward compatibility reasons, instance methods can be called statically, so
the name has to be distinct to disambiguate between static and instance
methods. The call type is not enough.
------------------------------------------------------------------------
[2012-09-07 22:33:55] accounts dot php at nickawilliams dot com
I also support this proposal. On numerous occasions throughout my career
writing
PHP I have found a need for this. While there are workarounds that work, they
are
all fairly verbose, convoluted, and/or difficult to follow. Please consider
reopening this!
------------------------------------------------------------------------
[2012-08-04 00:46:35] billco at fnarg dot com
Same here! This is a very useful pattern in other languages, where the same
method name can be used in both static and non-static contexts.
For example, a search() method in static context could create a new result
object, while the non-static form would search within an existing result set.
While it is possible to mimic this sort of behaviour by first creating a
"blank" object, it leads to dual-purpose methods (a big "if" statement),
resulting in messy, unmaintainable code. Why arbitrarily force developers to
violate good OOP practices ?
------------------------------------------------------------------------
[2012-06-28 08:15:27] info at renemaas dot de
Yeah this would be really helpful. I hope anybody of the PHP team will
implement
this kind of "stupid" feature. If not them please provide a "cool" solution for
using static and non-static functions.
------------------------------------------------------------------------
[2011-12-21 18:26:14] mac at macnewbold dot com
I agree with martijntje and nick.telford - the static function and normal
function of the same name shouldn't have any conflict, and it would be
extremely helpful to be able to define the same function for use both
statically and non-statically.
In the meantime, I'm going to try using __call() and __callStatic() to pretend
like this feature actually exists.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=40837
--
Edit this bug report at https://bugs.php.net/bug.php?id=40837&edit=1