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 Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
28 + 48 = ?
Subscribe to this entry?

 
 [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

Add a Patch

Pull Requests

Add a Pull Request

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: Fri Apr 26 08:01:30 2024 UTC