Paweł Stradomski wrote:
W liście LAUPRETRE François z dnia środa, 12 września 2007 12:38:
What do you mean by "try both"? Could you explain a bit more on that?
Yes. PHK's autoload handler is not filename-based. It works as a (poor
man's :) runtime linker, with a symbol map. In this map, interfaces and
classes have different symbol types. Today, when this handler receives a
request, it cannot know if it should look for an interface or a class. So,
it has to search both in turn.

Please consider that filename-based autoload handlers are just a primitive
implementation. If you consider only this family of handlers, that's right:
getting the symbol type is not very important. But, with smarter map-based
autoload handlers, it becomes very interesting to extend the feature to
functions and, there, providing the symbol type along with the requested
value becomes mandatory.


But how can interpreter know if it's looking for class or interface? There are obvious cases (class X implements Y, class A extends B, interface A extends B), but what with following language construct:

function doSomething (Service s) {...}

PHP tries to autoload type Service, but it can't know if it's looking for interface or class. Both are possible.

This would need to come from the user implementation of __autoload through naming conventions or a lookup table. PHP does not get involved with resolving a type to a filename, and rightly so.

-Stut

--
http://stut.net/

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to