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?

share|improve this question

78% accept rate
5  
Protip: foo or bar, not poop. – Waleed Khan Aug 23 at 3:44
1  
I use poop for variables. – FrankieTheKneeMan Aug 23 at 3:46
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 – tigrang Aug 23 at 3:47
1  
I read the question 3 times already and I'm still not sure if I understood it. – inhan Aug 23 at 3:47
1  
@FrankieTheKneeMan Pretty sure it wouldn't, it's PHP. – Waleed Khan Aug 23 at 3:48
show 4 more comments
feedback

2 Answers

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.

share|improve this answer
A shorter version: if(($res = poop()) === true) { /**/ } else { echo $res; } – inhan Aug 23 at 3:51
feedback

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.

share|improve this answer
feedback

Your Answer

 
or
required, but never shown
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.