At 04:32 04.05.2003, Andi Gutmans wrote:
>At 02:53 AM 5/4/2003 +0200, Marcus Börger wrote:
>>Some help of the engine would be good:
>>- automatically set EH_THROW mode at "try"
>>- automatically set EH_NORMAL mode at "catch" (first outmost catch)
>
>Huh? I think it's definitely not obvious that I'd want these to happen
>automatically. Actually I personally wouldn't, because I'd prefer PHP to
>continue the way it works and only use exceptions in user-land.
>
>>If noone objects i will commit this on monday evening.
>
>Please don't before this is discussed. We have discussed this kind of
>thing quite a few times and our opinion was that error handling in PHP
>shouldn't be changed. We wouldn't want some configuration switch to change
>how the scripts work nor is it a good idea if the same script behaves
>differently according to one switch.
There will surely no switch, that would be the stuiest thing we cold do.
>Anyway, we can discuss this again but definitely I don't think we should
>jump the gun with commits in this area until people really think of the
>whole picture. We have a large user base out there and we still want all
>of the user-base to "talk" in the same language.
Large user base? Who the hell uses ze2 or php5 widely out there?
The patch is intended for the new php5/ze2 oo features and will not change
any php4 features or its behavior.
It simply makes it possible to throw exceptions in ctors (and for that
there is now other solution).
Everything else the patch offers can surely be discussed: automation with
try/catch and so on.
What i like would be:
1) procedural (aka php4) no change (aka simply errors as of now)
2) oo (aka new php5/ze2 features) always throw exceptions instead of errors.
for example:
let's assume we have an extension "example" consisting of a function
"example_test", a namespace "example"
containing a function "factory" and a class "whatever" with a "whatelse":
example_test(); //-> normal operation or error mechanism
$obj = example::factory(); // -> object creation or exception
$obj = new example::whatever(); // -> object creation or exception
$obj->whatelse(); // -> normal operation or exception
WHY: becasue this only changes new things we don't have yet and it is easy
to learn
and deal with: "procedural = errors, oo = exceptions".
>I won't really be around for the next two weeks so maybe it's best to wait
>or in the least make sure Zeev takes part in this discussion.
Then i hope you can answer now :-)
>Thanks,
>Andi
>
>P.S. -BTW, what does SQLite do?
Just as Wez said. And you may take a look at my patches and tests for it on
the url i gave. Because this
extension lets you test exceptions with ctors and the factory() function.
regards
marcus