Hello Hans,
Thursday, February 19, 2004, 4:14:53 PM, you wrote:
> Timm Friebe wrote:
>> On Wed, 2004-02-18 at 18:40, Hans Lellelid wrote:
>>
>>>foreach($entities as $ent) {
>>> $peer = $ent->getPeer(); // e.g. might be BookPeer
>>> $peer->doSelect(new Criteria()); //static: BookPeer::doSelect()
>>>}
>>
>>
>> $m= new Reflection_Method($ent->getPeer(), 'doSelect');
>> $m->invoke(NULL, new Criteria());
>>
>> /* untested */
>>
> Yeah, I'm sure there's a way to get something like that to work also.
> I'm not sure that's prefereable to call_user_func(), honestly -- and it
> doesn't get around the basic problem which is that calling code needs to
> know whether methods are static.
> I guess I'm not sure why this is necessary ...
> As Hartmut & Lukas mention, I don't know why the class consumer *needs*
> to know that it's static. Clearly internally there should be no
> possibility of referencing $this.
> Also in my example the entire class is static -- i.e. all methods are
> static -- but what about cases where one or two methods in a class are
> static. Now $a->methodName() will work for most but all of a sudden you
> have to do $a::staticMethodName() for the static members.
> What I see as the workaround is creating static methods that aren't
> marked as static -- e.g. that would address the issue in my example
> above. I think that's a lot worse than allowing invocation of static
> methods using instances, however, because I do want developers who read
> the API docs to know these are static functions.
I hope nobody wants such strange things. Calling a static method from
an instance is just one of the ways to get to the class of that method.
--
Best regards,
Marcus mailto:[EMAIL PROTECTED]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php