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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
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: Sun Dec 22 06:01:30 2024 UTC