So there I was, trying to sort object internal data with a user-defined function and going nowhere, until it hit me: I could simply promote the data to the global scope using $GLOBALS and then import it inside the function. It even works for lambda-style functions created with create_function:
$GLOBALS['gOPMLData'] = $this->m_aData; // promote internal data to global scope foreach( $this->m_aLetters as $szLetter => $aKeys ) { usort( $aKeys, create_function('$a,$b',' global $gOPMLData; $a = strtolower($gOPMLData[$a]["TITLE"]); $b = strtolower($gOPMLData[$b]["TITLE"]); if( $a == $b ) return 0; return ( $a < $b ) ? -1 : 1;' )); $this->m_aLetters[$szLetter] = $aKeys; } unset( $GLOBALS['gOPMLData'] ); // clean up global scope
The reason I ended up doing this is that trying to pass a member function to usort (usort($aFoo,'$this->mysort')) doesn't work in the current builds of PHP. The lambda function is just to make things more compact (and not having to look for a stray function when changing the class behaviour).
