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

Reply via email to