Eloquent\Phony\Mock\MockGenerator::generateHeader PHP Метод

generateHeader() приватный Метод

private generateHeader ( $definition, $className )
    private function generateHeader($definition, $className)
    {
        $classNameParts = explode('\\', $className);
        if (count($classNameParts) > 1) {
            $className = array_pop($classNameParts);
            $namespace = 'namespace ' . implode('\\', $classNameParts) . ";\n\n";
        } else {
            $namespace = '';
        }
        $source = $namespace . 'class ' . $className;
        $parentClassName = $definition->parentClassName();
        $interfaceNames = $definition->interfaceNames();
        $traitNames = $definition->traitNames();
        if (null !== $parentClassName) {
            $source .= "\nextends \\" . $parentClassName;
        }
        array_unshift($interfaceNames, 'Eloquent\\Phony\\Mock\\Mock');
        $source .= "\nimplements \\" . implode(",\n           \\", $interfaceNames);
        $source .= "\n{";
        if ($traitNames) {
            $traitName = array_shift($traitNames);
            $source .= "\n    use \\" . $traitName;
            foreach ($traitNames as $traitName) {
                $source .= ",\n        \\" . $traitName;
            }
            $source .= "\n    {";
            $methods = $definition->methods();
            foreach ($methods->traitMethods() as $method) {
                $typeName = $method->method()->getDeclaringClass()->getName();
                $methodName = $method->name();
                $source .= "\n        \\" . $typeName . '::' . $methodName . "\n            as private _callTrait_" . str_replace('\\', "¦", $typeName) . "»" . $methodName . ';';
            }
            $source .= "\n    }\n";
        }
        return $source;
    }