helly Sat Feb 2 21:02:25 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/ext/spl/examples class_tree.php
Log:
- MFH Show interfaces
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/examples/class_tree.php?r1=1.1.2.5&r2=1.1.2.5.4.1&diff_format=u
Index: php-src/ext/spl/examples/class_tree.php
diff -u php-src/ext/spl/examples/class_tree.php:1.1.2.5
php-src/ext/spl/examples/class_tree.php:1.1.2.5.4.1
--- php-src/ext/spl/examples/class_tree.php:1.1.2.5 Sun Oct 30 16:07:45 2005
+++ php-src/ext/spl/examples/class_tree.php Sat Feb 2 21:02:25 2008
@@ -4,8 +4,8 @@
* @brief Class Tree example
* @ingroup Examples
* @author Marcus Boerger
- * @date 2003 - 2005
- * @version 1.0
+ * @date 2003 - 2008
+ * @version 1.1
*
* Usage: php class_tree.php \<class\>
*
@@ -38,17 +38,25 @@
{
foreach(get_declared_classes() as $cname)
{
- if (strcasecmp(get_parent_class($cname), $base) == 0)
+ $parent = get_parent_class($cname);
+ if (strcasecmp($parent, $base) == 0)
{
$this->offsetSet($cname, new
SubClasses($cname));
}
if ($check_interfaces)
{
+ if ($parent)
+ {
+ $parent_imp = class_implements($parent);
+ }
foreach(class_implements($cname) as $iname)
{
if (strcasecmp($iname, $base) == 0)
{
- $this->offsetSet($cname, new
SubClasses($cname));
+ if (!$parent ||
!in_array($iname, $parent_imp))
+ {
+
$this->offsetSet($cname, new SubClasses($cname));
+ }
}
}
}
@@ -66,13 +74,31 @@
}
}
}
+ $this->uksort('strnatcasecmp');
}
/** @return key() since that is the name we need
*/
function current()
{
- return parent::key();
+ $result = parent::key();
+ $parent = get_parent_class($result);
+ if ($parent)
+ {
+ $interfaces = array_diff(class_implements($result),
class_implements($parent));
+ if ($interfaces)
+ {
+ $implements = array();
+ foreach($interfaces as $interface)
+ {
+ $implements = array_merge($implements,
class_implements($interface));
+ }
+ $interfaces = array_diff($interfaces,
$implements);
+ natcasesort($interfaces);
+ $result .= ' (' . join(', ', $interfaces) . ')';
+ }
+ }
+ return $result;
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php