Commit: ce81e97346ed24b794fc066e5dc726e089137a99 Author: Anatol Belski <[email protected]> Wed, 11 Sep 2013 18:09:00 +0200 Parents: 8706985d0a2b387d645613391e879201f0398cbd Branches: master
Link: http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=ce81e97346ed24b794fc066e5dc726e089137a99 Log: the better way to read the chained props from SimpleXml objects Changed paths: M client/include/PeclExt.php Diff: diff --git a/client/include/PeclExt.php b/client/include/PeclExt.php index 36e7deb..dc86f73 100644 --- a/client/include/PeclExt.php +++ b/client/include/PeclExt.php @@ -36,8 +36,8 @@ class PeclExt /* Setup some stuff */ if ($this->package_xml) { - $this->name = (string)$this->package_xml->name; - $this->version = (string)$this->package_xml->version->release; + $this->name = $this->getPackageXmlProperty("name"); + $this->version = $this->getPackageXmlProperty("version", "release"); } if (!$this->name || !$this->version) { @@ -67,7 +67,7 @@ class PeclExt } } - $this->name = strtolower($this->name); + $this->name = str_replace('_', '-', strtolower($this->name)); $this->version = strtolower($this->version); } @@ -398,8 +398,8 @@ class PeclExt } if ($this->package_xml) { - $min_php_ver = (string)$this->package_xml->dependencies->required->php->min; - $max_php_ver = (string)$this->package_xml->dependencies->required->php->max; + $min_php_ver = $this->getPackageXmlProperty("dependencies", "required", "php", "min"); + $max_php_ver = $this->getPackageXmlProperty("dependencies", "required", "php", "max"); $php_ver = ''; $ver_hdr = $this->build->getSourceDir() . '/main/php_version.h'; @@ -465,5 +465,33 @@ class PeclExt } + protected function getPackageXmlProperty() + { + if (!$this->package_xml) { + return NULL; + } + + $list = func_get_args(); + $last = func_get_arg(func_num_args()-1); + + $current = $this->package_xml; + foreach ($list as $prop) { + if (!isset($current->$prop)) { + return NULL; + } + + if ($prop == $last) { + return $current->$prop; + } + + /* if the $prop isn't an object and isn't last, + no way to iterate the remaining chain*/ + if (is_object($current->$prop)) { + $current = $current->$prop; + } else { + return NULL; + } + } + } } -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
