Leading slash in alias use at class line
opened this issue · comments
Version: 4.1.0 RC
Bug Description
The generator stores a regular 'as'-alias, but outputs it with a leading slash.
Steps To Reproduce
$ns = new PhpNamespace('Me\My\Action');
$target = new ClassType('MyAction');
$target->setFinal()->setExtends('ParentClass')->addComment('{@inheritDoc}');
$ns->add($target);
$ns->addUse('Their\Package\ParentClass', 'ParentClass');
echo var_dump($ns, (string) $ns);
Dump:
object(Nette\PhpGenerator\PhpNamespace)#4 (5) {
["name":"Nette\PhpGenerator\PhpNamespace":private]=>string(12) "Me\My\Action"
["bracketedSyntax":"Nette\PhpGenerator\PhpNamespace":private]=> bool(false)
["aliases":"Nette\PhpGenerator\PhpNamespace":private]=> array(3) {
["n"]=> array(1) {
["ParentClass"]=> string(25) "Their\Package\ParentClass"
}
["f"]=> array(0) {}
["c"]=> array(0) {}
}
["classes":"Nette\PhpGenerator\PhpNamespace":private]=> array(1) {
["myclass"]=> object(Nette\PhpGenerator\ClassType)#2 (14) {
["namespace":"Nette\PhpGenerator\ClassLike":private]=> NULL
["name":"Nette\PhpGenerator\ClassLike":private]=> string(7) "MyClass"
["comment":"Nette\PhpGenerator\ClassLike":private]=> string(13) "{@inheritDoc}"
["attributes":"Nette\PhpGenerator\ClassLike":private]=> array(0) {}
["type":"Nette\PhpGenerator\ClassType":private]=> string(5) "class"
["final":"Nette\PhpGenerator\ClassType":private]=> bool(true)
["abstract":"Nette\PhpGenerator\ClassType":private]=> bool(false)
["extends":"Nette\PhpGenerator\ClassType":private]=> string(11) "ParentClass"
["readOnly":"Nette\PhpGenerator\ClassType":private]=> bool(false)
["implements":"Nette\PhpGenerator\ClassType":private]=> array(0) {}
["consts":"Nette\PhpGenerator\ClassType":private]=> array(0) {}
["methods":"Nette\PhpGenerator\ClassType":private]=> array(0) {}
["properties":"Nette\PhpGenerator\ClassType":private]=> array(0) {}
["traits":"Nette\PhpGenerator\ClassType":private]=> array(0) {}
}
}
["functions":"Nette\PhpGenerator\PhpNamespace":private]=> array(0) {}
}
output
namespace Me\My\Action;
use Their\Package\ParentClass;
/**
* {@inheritDoc}
*/
final class MyClass extends \ParentClass
{
}
Expected Behavior
namespace Me\My\Action;
use Their\Package\ParentClass;
/**
* {@inheritDoc}
*/
final class MyClass extends ParentClass
{
}
If I'm blind and wrong somewhere, point me in the right place.
It is described here https://doc.nette.org/en/php-generator#toc-class-names-resolving
yes, it helps me.
thanks!