php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #40712 return after "or"
Submitted: 2007-03-03 18:54 UTC Modified: 2007-03-04 04:09 UTC
From: s dot j dot t dot mocking at students dot uu dot nl Assigned:
Status: Not a bug Package: *Programming Data Structures
PHP Version: 5.2.1 OS: Linux (Debian Testing)
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: s dot j dot t dot mocking at students dot uu dot nl
New email:
PHP Version: OS:

 

 [2007-03-03 18:54 UTC] s dot j dot t dot mocking at students dot uu dot nl
Description:
------------
"<statement> or die" works as expected, but "<statement> or return" results in syntax errors.

Haven't found anything in the documentation which describes this behavior. If it's not a bug, it's very counterintuitive.

Reproduce code:
---------------
This works:

function foo()
{
  0 or die("bla");
}

This produces a syntax error:

function bar()
{
  0 or return ("bla");
}

Expected result:
----------------
I would expect bar() to return bla

Actual result:
--------------
Parse error: syntax error, unexpected T_RETURN

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-03-04 04:09 UTC] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

.
 [2015-05-13 15:49 UTC] someone dot wanted dot to dot be dot unknown at gmail dot com
In 2015, I'd like to ask php developers team make this feature available.
We can't write very clear code like

> <?php
> unlink() or return false;

Instead of that we forced to use huge if statement:

> <?php
> if (!unlink())
>   return false;

I think community will be pleasant if we will see this feature implemented.
 [2016-10-19 01:56 UTC] damien dot bezborodov at staff dot nuskope dot com dot au
This would be a useful feature. Compare the clarity of the following examples where every line requires error checking: 1) using IF statements, 2) using invalid "or return false" syntax, or 3) using invalid goto statements.

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

function foo(...) {
    ...

    $stmt = $mysql->prepare($sql);
    if (!$stmt) return false;
    if (!$stmt->bind_param('i', $foo)) return false;
    if (!$stmt->bind_result($bar, $baz, $quux)) return false;
    if (!$stmt->execute()) return false;

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

    $stmt = $mysql->prepare($sql) or return false;
    $stmt->bind_param('i', $foo) or return false;
    $stmt->bind_result($bar, $baz, $quux) or return false;
    $stmt->execute() or return false;

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

    $stmt = $mysql->prepare($sql) or goto error;
    $stmt->bind_param('i', $foo) or goto error;
    $stmt->bind_result($bar, $baz, $quux) or goto error;
    $stmt->execute() or goto error;

    ...

    return true;

    error: return false;
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Oct 12 09:01:27 2024 UTC