]> granicus.if.org Git - php/commitdiff
- Show interfaces
authorMarcus Boerger <helly@php.net>
Sat, 2 Feb 2008 21:02:08 +0000 (21:02 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 2 Feb 2008 21:02:08 +0000 (21:02 +0000)
ext/spl/examples/class_tree.php

index f7336f46056af447f713a017871af87cba49a52e..fc021d5c01c987dc28f5f46509f9411c4bb94f21 100755 (executable)
@@ -4,7 +4,7 @@
  * @brief   Class Tree example
  * @ingroup Examples
  * @author  Marcus Boerger
- * @date    2003 - 2006
+ * @date    2003 - 2008
  * @version 1.1
  *
  * Usage: php class_tree.php \<class\>
@@ -76,12 +76,29 @@ class SubClasses extends RecursiveArrayIterator
                }
                $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;
        }
 }