Edit report at https://bugs.php.net/bug.php?id=62164&edit=1

 ID:                 62164
 Comment by:         kriss at krizalys dot com
 Reported by:        kriss at krizalys dot com
 Summary:            [PATCH] Add support for alternative try/catch syntax
 Status:             Open
 Type:               Feature/Change Request
 Package:            Scripting Engine problem
 Operating System:   *
 PHP Version:        5.4.3
 Block user comment: N
 Private report:     N

 New Comment:

I tested the patch successfully on Gentoo x86_64/PHP-5.4.3


Previous Comments:
------------------------------------------------------------------------
[2012-05-26 06:59:33] kriss at krizalys dot com

Description:
------------
The attached patch adds support to alternatively open a try block using a colon 
(:) in try/catch structures. When using this syntax, each catch block must also 
be open by a colon, try and catch blocks must not be closed by a closing brace 
(}), and the whole try/catch structure must be closed by a "endtry" keyword.

The idea is to provide greater readability when PHP code is intermixed with 
HTML code and keep consistency with constructs like if/endif, for/foreach, 
etc...

Please, note that after patching, the Zend scanner and parser, as well as 
ext/tokenizer_data.c should be regenerated (using re2c, bison and 
tokenizer_data_gen.sh respectively, or using the provided Makefile targets).



Test script:
---------------
<?php
try:
        echo "Trying something unsafe\n";
        throw new Exception('thrown using alternative try/catch syntax');
catch (int $e):
        echo "Caught exception of type int (ints are not throwable, this is 
just example)\n";
        // several statements can also be used here
catch (Exception $e):
        echo "Caught exception of type Exception: {$e->getMessage()}\n";
        // several statements can also be used here
endtry;
?>
<?php try:?>
<p>Trying something unsafe</p>
<?php throw new Exception('thrown using alternative try/catch syntax');?>
<?php catch (int $e):?>
<p>Caught exception of type int (ints are not throwable, this is just 
example)</p>
<?php catch (Exception $e):?>
<p>Caught exception of type Exception: <?php echo $e->getMessage();?></p>
<?php endtry;?>

Expected result:
----------------
Trying something unsafe
Caught exception of type Exception: thrown using alternative try/catch syntax
<p>Trying something unsafe</p>
<p>Caught exception of type Exception: thrown using alternative try/catch 
syntax</p>

Actual result:
--------------
PHP Parse error:  syntax error, unexpected ':', expecting '{' in 
/home/aaa/test.php on line 2

Parse error: syntax error, unexpected ':', expecting '{' in /home/aaa/test.php 
on line 2



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=62164&edit=1

Reply via email to