0

I have a set of php functions designed to return error text if they fail. They aren't returning the text. My function looks like this:

function poop(){
    $stuff = stuff;
    $things = things;
    if($stuff != stuff){
        return 'e: stuff does not equal stuff!';
    }
    if($things != things){
        return 'e: things do not equal things!';
    }
    // if we got this far all is good!
    return true;

}

I call my function in code like so:

if(poop() === true){
    // do things that require poop
} else {
    echo poop();
}

I thought this would return the 'e:' string as a string and print it to the page in the event that poop() did not return a boolean true value, but in reality it is not. I'm wondering if this is because of a fault in the remainder of my code or if this functionality doesn't actually exist in PHP? How should I go about ensuring I have an error returned from all my function checks? Should I use echo instead of return to print it as a string on the page?

8
  • 5
    Protip: foo or bar, not poop. Commented Aug 23, 2012 at 3:44
  • 2
    Don't understand the issue but in any case you should do $result = poop(); if ($result === true){}else{ echo $result;} instead of calling the func twice Commented Aug 23, 2012 at 3:47
  • poop joke never gets old Commented Aug 23, 2012 at 3:47
  • 1
    I read the question 3 times already and I'm still not sure if I understood it. Commented Aug 23, 2012 at 3:47
  • 1
    @FrankieTheKneeMan Pretty sure it wouldn't, it's PHP. Commented Aug 23, 2012 at 3:48

2 Answers 2

2

Don't call your function more than once. Save its return value in a variable:

$ret = poop();
if ($ret === true) {
    // Do things that require the success.
} else {
    // Log your error message here:
    echo "An error occurred: ".$ret;
    logMessage($ret);
    // etc.
}

You may also want to look into PHP exceptions for a potentially cleaner — but probably slower — solution to error handling.

Sign up to request clarification or add additional context in comments.

1 Comment

A shorter version: if(($res = poop()) === true) { /**/ } else { echo $res; }
0

try this:

if( poop() !== TRUE )
    echo poop();

I used it on this code:

function poop(){ 
    $stuff = 'stuff'; 
    $things = 'things'; 
    // this is where we have wrong value
    if($stuff != 'stuff1'){ 
        return 'e: stuff does not equal stuff!'; 
    } 
    if($things != 'things'){ 
       return 'e: things do not equal things!'; 
    } 
    // if we got this far all is good! 
    return true; 

}

I hope I goood understood you, I'm newby in PHP too. :) It is also good practice to throw an exception instead of returning error msg string.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.