#40886 [Opn]: static methods assigned to instances
| From: | andrea at 3site dot it | Date: | Wed, 21 Mar 2007 20:13:22 +0000 |
| Subject: | #40886 [Opn]: static methods assigned to instances | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-110658@lists.php.net to get a copy of this message | ||
ID: 40886
User updated by: andrea at 3site dot it
Reported By: andrea at 3site dot it
Status: Open
Bug Type: Class/Object related
Operating System: Windows XP SP2
PHP Version: 5.2.1
New Comment:
damn ... http://www.php.net/manual/en/language.oop5.static.php
"Declaring class members or methods as static makes them accessible
without needing an instantiation of the class. A member declared as
static can not be accessed with an instantiated class object (though a
static method can)."
Well ... C# and other languages doesn't assign static methods to
instances.
C++ does it but it assign static parameters too.
With PHP 5 we can't use the same name for 2 different methods (for
example one static and one public) but we can call a static method
without static declaration (only E_STRICT tells us there's something
wrong) while C++ can't call a public method, or parameter, with a class
if it's not declared as static.
At this point, why did You introduce the static method/property type?
This implementation is not Object Oriented, it's quite "Hilarius"
Oriented.
Sorry for this bug (and for me it's really a bug!).
Regards.
Previous Comments:
------------------------------------------------------------------------
[2007-03-21 18:56:54] andrea at 3site dot it
Description:
------------
Description:
------------
I don't know if it is by design, but this is not what I would expect
logically ... (and with static variables it doesn't happen so it should
be a _strange_ logic)
I suppose this problem is related with this one:
http://bugs.php.net/bug.php?id=40837
but I think this one is *not* callable Irrelevant
Reproduce code:
---------------
<?php
class ExampleClass {
public static function StaticExample(){
echo "StaticExample", "<br />";
}
public function InstanceExample(){
echo "InstanceExample", "<br />";
}
}
$test = new ExampleClass();
ExampleClass::StaticExample(); // ok
$test->InstanceExample(); // ok
$test->StaticExample(); // what the hell?
?>
Expected result:
----------------
StaticExample
InstanceExample
FATAL ERROR ... undefined method StaticExample
Actual result:
--------------
StaticExample
InstanceExample
StaticExample
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40886&edit=1