Req #81058 [Com]: Inedible syntax porridge

From: Date: Thu, 20 May 2021 11:19:17 +0000
Subject: Req #81058 [Com]: Inedible syntax porridge
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-233913@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81058&edit=1 ID: 81058 Comment by: zmfw1991 at gmail dot com Reported by: zmfw1991 at gmail dot com Summary: Inedible syntax porridge Status: Not a bug Type: Feature/Change Request Package: Compile Warning Operating System: all? PHP Version: Irrelevant Block user comment: N Private report: N New Comment: It would be wiser to throw out ParseError. But php doesn't do that. Previous Comments: ------------------------------------------------------------------------ [2021-05-20 11:04:56] rtrtrtrtrt at dfdfdfdf dot dfd garbage in - garbage out ------------------------------------------------------------------------ [2021-05-20 11:02:49] zmfw1991 at gmail dot com No. This is bug! [RU] Правильнее было бы определять это как синтаксическую ошибку и выдавать предупреждение, но php сейчас это не обнаруживает, он не замечает лишнюю точку с запятой после if () но перед {}. Здесь возможно неявное и непредсказуемое поведение, притом что врядли кто-то будет писать и ожидать корректного поведения от странных конструкции таких как: if( expression ); { code } При этом PHP волне обнаруживает синтаксическую ошибку здесь, на слове else: if ( false ); { echo 'true'; } else { echo 'true'; } Но если else не указан, то PHP промолчит. Я на поиск такой ошибки убил час, а PHP молчит как партизан, она очень незаметна и не бросается в глаза, но это ошибка всё же. ------------------------------------------------------------------------ [2021-05-20 10:42:48] derick@php.net Sorry, but your problem does not imply a bug in PHP itself. For a list of more appropriate places to ask for help using PHP, please visit http://www.php.net/support.php as this bug system is not the appropriate forum for asking support questions. Due to the volume of reports we can not explain in detail here why your report is not a bug. The support channels will be able to provide an explanation for you. Thank you for your interest in PHP. ------------------------------------------------------------------------ [2021-05-20 10:24:52] zmfw1991 at gmail dot com Description: ------------ Semicolon after Control Structures. Versions: php8.0.3, maybe php 5.3 and <5 Test script: --------------- <?php $arr = ['a', 'b', 'c', 'd']; error_reporting(E_ALL); /*---------------------------------------------- example 1 ----------------------------------------------*/ echo "<h1>example 1:</h1>\r\n"; foreach ( $arr as $val ); // Semicolon after foreach! Errors not found! { echo $val . "<br>\r\n"; } /*---------------------------------------------- example 2 ----------------------------------------------*/ echo "<h1>example 2:</h1>\r\n"; function nope() {} foreach ( $arr as $val); nope(); { echo $val . "<br>\r\n"; } /*---------------------------------------------- example 3 ----------------------------------------------*/ echo "<h1>example 3:</h1>\r\n"; if ( false ); { echo 'true'; } /*---------------------------------------------- WHY? ----------------------------------------------*/ echo " <h1>WHY?</h1>\r\n Because <i>foreach</i> and <i>if</i> is Control Structures?<br>\r\n These errors can be searched forever and never found. They are invisible. "; ?> ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=81058&edit=1

« previous php.bugs (#233913) next »