Hi Stefan,

Dev writes a script, uses autoload, overrides global class.
> Distributed to user, that has ns.lookup=On as you propose, user borks > his
> install, lacks the file containing the class, gets the global class ->
> obscure error messages because of nonexisting methods in places > unrelated
> to
> the place where the actual error happened. Not really a good idea, IMO.

This is what happens now, right. So what's different?

With the proposed change -- failing at "step 3", it doesn't. It fails at the
time that you try to create the instance, saying the class was not found,
which is actually the case.

For clarity...

Current behaviour:

1) check for namespaced\classname
2) check for internal classname
3) try to autoload namespaced\classname
4) fail

Proposed (Stas, Greg):

1) check for namespaced\classname
2) try to autoload namespaced\classname
3) fail

What I'm suggesting is a configurable switch between that proposed order and:

1) check for namespaced\classname
2) try to autoload namespaced\classname
3) check for internal classname
4) fail

> Failing there is the best option. It's not like you have to prefix > every > single occurence, you just have to say at the top of the file "When I > say
> Exception, I mean \Exception".

The point is that your dev would have done exactly that, so whether your
user has the setting on or off is immaterial.

- Steph

No, the dev didn't mean \Exception, he meant *his* exception, the one that he
has in the current namespace, and any way your setting would not have
resulted in any error, because for the dev, autoload worked.

I see your point. OK, thanks.

- Steph


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

Reply via email to