Re: PHP 5.1
| From: | Stanislav Malyshev | Date: | Mon, 06 Jun 2005 12:38:47 +0000 |
| Subject: | Re: PHP 5.1 | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-16428@lists.php.net to get a copy of this message | ||
IA>>A recursive function, takes a mere 13087 iterations to result in a crash and
IA>>this is a very basic example.
IA>>$i = 0;
IA>>function a() { global $i; echo ++$i."\n"; a(); }
IA>>a();
IA>>
IA>>A more complex function could take as little as 1k iterations.
Well, if so, PHP needs to be fixed to use less stack allocations. But
anyway, rarely program logic would require a recursion 1k levels deep.
Anyway, this is a disgression from the discussed topic.
IA>>Ok, so you propose that people start using exceptions for OO and
IA>>procedural code just because they are "there"? One major problem with
No, I don't propose that. I am just concerned once you put goto there it
would be abused in all kinds of "creative" ways and would make a mess out
of the code.
IA>>an exception, is that once it is thrown you cannot go back to portions
IA>>of code found within the exception block. This is why in many
IA>>situations they are not practical for anything but fatal errors.
With goto you can't go back either - unless you make all you program logic
be a web of goto's - which is exactly the kind of abuse I am concerned
about.
That is not to mention that using goto _and_ exceptions (and once they are
both there, people probably start using them anyway - how can you prohibit
that?) would create even more messy code, unless you really restrict where
can you put label and where can you jump. Imagine jumping inside catch
block, for example - it may lead to all kinds of confusion.
--
Stanislav Malyshev, Zend Products Engineer
stas@zend.com http://www.zend.com/ +972-3-6139665 ext.115