0

I am trying to use an IF statement in PHP to set a variable based on the value of an object returned by an outbound message being processed with simplexml_load_string().

It seems that comparing the resulting object to string in PHP is not working as I expected it would.

The relevant code is:

<?php
…
ob_start();
$capturedData = fopen('php://input', 'rb');
$content = fread($capturedData,5000);
$rcXML = simplexml_load_string($content);
…
$priority = $rcXML->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://soap.sforce.com/2005/09/outbound')->notifications->Notification->sObject->children('urn:sobject.enterprise.soap.sforce.com')->Priority.PHP_EOL;
…
ob_end_clean();
…
if ($priority == "Urgent") {
   $color = "red";
} 
…
?>

I have tried several variations of print_r() and (string) against $priority, but am still not getting the expected results (change $color to "red").

The googles tells me that I need to use asXML() since simplexml_load_string() does not return a standard PHP object, but I am having no luck in getting that to work either.

$priority->asXML() returns: PHP Fatal error: Call to a member function asXML() on string

And I cannot seem to figure out how to properly use that either I guess.

Admittedly, my coding skills are not that polished!

Has anyone done something like this or know how I might be able to get this to work?

1 Answer 1

0

ok - I was going down the wrong path on this....

Some additional debug and help from a coworker and the problem was this:

$priority was being saved with a newline at the end.

Simply add trim() to the if condition and wha-la!

if (trim($priority) == "High") {
   $color = "yellow";
} elseif (trim($priority) == "Urgent") {
   $color = "red";
} else {
   $color = "green";
}

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.