diff options
author | Josh Hoyt <josh@janrain.com> | 2006-09-27 00:03:31 +0000 |
---|---|---|
committer | Josh Hoyt <josh@janrain.com> | 2006-09-27 00:03:31 +0000 |
commit | 734bfe87f2aa26def84120a14c919e66682e9090 (patch) | |
tree | 14aae04454295e45640a15d34cb61d58e8d5b8aa | |
parent | ab744549a11287f12889ecbefa8308314cab719e (diff) | |
download | php-openid-734bfe87f2aa26def84120a14c919e66682e9090.zip php-openid-734bfe87f2aa26def84120a14c919e66682e9090.tar.gz php-openid-734bfe87f2aa26def84120a14c919e66682e9090.tar.bz2 |
[project @ Make XML try to load the proper library names on Windows]
-rw-r--r-- | Services/Yadis/XML.php | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/Services/Yadis/XML.php b/Services/Yadis/XML.php index 59ec0df..331e8fb 100644 --- a/Services/Yadis/XML.php +++ b/Services/Yadis/XML.php @@ -307,8 +307,10 @@ function Services_Yadis_setDefaultParser(&$parser) } $__Services_Yadis_xml_extensions = array( - 'dom' => 'Services_Yadis_dom', - 'domxml' => 'Services_Yadis_domxml' + 'dom' => array('classname' => 'Services_Yadis_dom', + 'libname' => array('dom.so', 'dom.dll')), + 'domxml' => array('classname' => 'Services_Yadis_domxml', + 'libname' => array('domxml.so', 'php_domxml.dll')), ); /** @@ -327,20 +329,26 @@ function &Services_Yadis_getXMLParser() } $p = null; + $classname = null; // Return a wrapper for the resident implementation, if any. - foreach ($__Services_Yadis_xml_extensions as $name => $cls) { - if (extension_loaded($name) || - @dl($name . '.so')) { - // First create a dummy variable because PHP doesn't let - // you return things by reference unless they're - // variables. Feh. - $p = new $cls(); + foreach ($__Services_Yadis_xml_extensions as $name => $params) { + if (!extension_loaded($name)) { + foreach ($params['libname'] as $libname) { + if (@dl($libname)) { + $classname = $params['classname']; + } + } + } else { + $classname = $params['classname']; + } + if (isset($classname)) { + $p = new $classname(); return $p; } } - return null; + return $p; } -?>
\ No newline at end of file +?> |