Reputation: 1998
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?
Upvotes: 0
Views: 207
Reputation: 5
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.
Upvotes: 0
Reputation: 11467
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.
Upvotes: 2