php-code-generator
php-code-generator copied to clipboard
Unable to create method typed array with docblock Object[]
This line:
https://github.com/gossi/php-code-generator/blob/d67b8f9d775710e9401fc1a9306c7b7797860a65/src/model/parts/TypeDocblockGeneratorPart.php#L52
Overwriting @return tag if you define method type.
This causes that I'm unable to generate method
/**
- @return Bar[] */ function Foo(): array
Can you give a code example?
Case 1:
$method = PhpMethod::create('MyMethod');
$method->setType('Bar[]');
// $method->getDocblock()->appendTag(ReturnTag::create("Bar[]"));
$class = PhpClass::create("Bar")
->setMethod($method);
$generator = new CodeGenerator([
'generateReturnTypeHints' => true
]);
print_r($generator->generate($class));
Result
/**
* @return Bar[]
*/
public function MyMethod(): Bar[] {
Case 2:
$method = PhpMethod::create('MyMethod');
// $method->setType('array');
$method->getDocblock()->appendTag(ReturnTag::create("Bar[]"));
$class = PhpClass::create("Bar")
->setMethod($method);
$generator = new CodeGenerator([
'generateReturnTypeHints' => true
]);
print_r($generator->generate($class));
Result:
/**
* @return Bar[]
*/
public function MyMethod() {
Case 3
$method = PhpMethod::create('MyMethod');
$method->setType('array');
$method->getDocblock()->appendTag(ReturnTag::create("Bar[]"));
$class = PhpClass::create("Bar")
->setMethod($method);
$generator = new CodeGenerator([
'generateReturnTypeHints' => true
]);
print_r($generator->generate($class));
Result:
/**
* @return array
*/
public function MyMethod(): array {
Expected Result ( Comment lines 51-53 in TypeDocblockGeneratorPart.php)
/**
* @return Bar[]
*/
public function MyMethod(): array {