Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Jan 8, 2020. It is now read-only.

Commit 9253e52

Browse files
committed
Merge branch 'feature/zf2-151' into develop
Close #2702
2 parents 9520b78 + 00deb73 commit 9253e52

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

library/Zend/Code/Generator/ClassGenerator.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ class ClassGenerator extends AbstractGenerator
6767
*/
6868
protected $methods = array();
6969

70+
/**
71+
* @var array Array of string names
72+
*/
73+
protected $uses = array();
74+
7075
/**
7176
* fromReflection() - build a Code Generation Php Object from a Class Reflection
7277
*
@@ -479,6 +484,19 @@ public function addPropertyFromGenerator(PropertyGenerator $property)
479484
return $this;
480485
}
481486

487+
/**
488+
* Add a class to "use" classes
489+
*
490+
* @param string $useClass
491+
*/
492+
public function addUse($use, $useAlias = null)
493+
{
494+
if (!empty($useAlias)) {
495+
$use .= ' as ' . $useAlias;
496+
}
497+
$this->uses[] = $use;
498+
}
499+
482500
/**
483501
* getProperties()
484502
*
@@ -505,6 +523,16 @@ public function getProperty($propertyName)
505523
return false;
506524
}
507525

526+
/**
527+
* Returns the "use" classes
528+
*
529+
* @return array
530+
*/
531+
public function getUses()
532+
{
533+
return $this->uses;
534+
}
535+
508536
/**
509537
* hasProperty()
510538
*
@@ -664,6 +692,14 @@ public function generate()
664692
$output .= 'namespace ' . $namespace . ';' . self::LINE_FEED . self::LINE_FEED;
665693
}
666694

695+
$uses = $this->getUses();
696+
if (!empty($uses)) {
697+
foreach ($uses as $use) {
698+
$output .= 'use ' . $use . ';' . self::LINE_FEED;
699+
}
700+
$output .= self::LINE_FEED;
701+
}
702+
667703
if (null !== ($docBlock = $this->getDocBlock())) {
668704
$docBlock->setIndentation('');
669705
$output .= $docBlock->generate();

tests/ZendTest/Code/Generator/ClassGeneratorTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,4 +362,19 @@ public function testPassingANamespacedClassnameShouldGenerateAClassnameWithoutIt
362362
$received = $classGeneratorClass->generate();
363363
$this->assertContains('class FunClass', $received, $received);
364364
}
365+
366+
/**
367+
* @group ZF2-151
368+
*/
369+
public function testAddUses()
370+
{
371+
$classGenerator = new ClassGenerator();
372+
$classGenerator->setName('My\Class');
373+
$classGenerator->addUse('My\First\Use\Class');
374+
$classGenerator->addUse('My\Second\Use\Class', 'MyAlias');
375+
$generated = $classGenerator->generate();
376+
377+
$this->assertContains('use My\First\Use\Class;', $generated);
378+
$this->assertContains('use My\Second\Use\Class as MyAlias;', $generated);
379+
}
365380
}

0 commit comments

Comments
 (0)