<?php
namespace test\g\l;
class 
{ }rPattern) {
                
preg_match($interfaceInjectorPattern$rIface->getName(), $matches);
                if (
$matches) {
                    foreach (
$rIface->getMethods() as $rMethod) {
                        if (
$rMethod->getName() === '__construct') {
                            
// constructor not allowed in interfaces
                            
continue;
                        }
                        
$def['methods'][$rMethod->getName()] = true;
                        
$this->processParams($def$rClass$rMethod);
                    }
                    continue 
2;
                }
            }
        }
    }

    
/**
     * @param array                                  $def
     * @param \Zend\Code\Reflection\ClassReflection  $rClass
     * @param \Zend\Code\Reflection\MethodReflection $rMethod
     */
    
protected function processParams(&$defReflection\ClassReflection $rClassReflection\MethodReflection $rMethod)
    {
        if (
count($rMethod->getParameters()) === 0) {
            return;
        }

        
$methodName $rMethod->getName();

        
// @todo annotations here for alternate names?

        
$def['parameters'][$methodName] = array();

        foreach (
$rMethod->getParameters() as $p) {

            
/** @var $p \ReflectionParameter  */
            
$actualParamName $p->getName();

            
$fqName $rClass->getName() . '::' $rMethod->getName() . ':' $p->getPosition();

            
$def['parameters'][$methodName][$fqName] = array();

            
// set the class name, if it exists
            
$def['parameters'][$methodName][$fqName][] = $actualParamName;
            
$def['parameters'][$methodName][$fqName][] = ($p->getClass() !== null) ? $p->getClass()->getName() : null;
            
$def['parameters'][$methodName][$fqName][] = !($optional $p->isOptional() && $p->isDefaultValueAvailable());
            
$def['parameters'][$methodName][$fqName][] = $optional $p->getDefaultValue() : null;
        }

    }
}