Req #52139 [Opn->Wfx]: Method name conflict
| From: | johannes@php.net | Date: | Fri, 06 Aug 2010 23:57:56 +0000 |
| Subject: | Req #52139 [Opn->Wfx]: Method name conflict | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-153198@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=52139&edit=1
ID: 52139
Updated by: johannes@php.net
Reported by: juwe at clasennet dot de
Summary: Method name conflict
-Status: Open
+Status: Wont fix
Type: Feature/Change Request
Package: SPL related
Operating System: Doesn't matter
PHP Version: Irrelevant
Block user comment: N
New Comment:
We can't "simply" rename them unfortunately.
Previous Comments:
------------------------------------------------------------------------
[2010-06-22 11:01:03] juwe at clasennet dot de
Description:
------------
Could you please solve the method name conflict between SplObjectStorage
ans SplSubject?
Since SplObjectStorage is the closest available thing to an object map,
it is a prior candidate to being a subject in an observer design
pattern. Since both, the interface and the class itself use the method
names attach and detach, this constellation isn't really feasible at the
moment.
Please take a look at the example below.
Neither attach(), nor detach() are really necessary for
SplObjectStorage. Both their behavior could be implemented using
offsetSet() and offsetUnset(). If they are necessary at all, could you
please call them append() and remove() for example?
Or could you maybe add a suffix "Observer(s)" to the methods of
SplSubject?
Both would enable us to implement the observer design pattern on
SplObjectStorage in derived classes.
Test script:
---------------
class MyObjectMap extends SplObjectStorage implements SplSubject
{
public function offsetSet($key,$value)
{
// check types of $key and $value and call parent method
}
public function offsetGet($key,$value)
{
// check existance of $key and return result of public method
}
public function attach(SplObserver o) // fails with a naming conflict
{
// store observer for later notification
}
}
class MyObjectMapHandler implements SplObserver
{
// implements update method and reacts to changes of MyObjectMap
}
Expected result:
----------------
A possibility to have observable lists, as it is possible with classes
derived from ArrayObject, SplHeap, and so on
Actual result:
--------------
Probably: An error message because of the name clash.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=52139&edit=1