Skip to content

Commit 12ff888

Browse files
committed
Improve high level API
1 parent 5b4fcc0 commit 12ff888

File tree

3 files changed

+72
-17
lines changed

3 files changed

+72
-17
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ $classFactory = OpenCodeModeling\CodeAst\Builder\ClassBuilder::fromScratch('Test
2424
$classFactory
2525
->setFinal(true)
2626
->setExtends('BaseClass')
27-
->setNamespaceUse('Foo\\Bar')
27+
->setNamespaceImports('Foo\\Bar')
2828
->setImplements('\\Iterator', 'Bar');
2929

3030
$nodeTraverser = new PhpParser\NodeTraverser();

src/Builder/ClassBuilder.php

Lines changed: 65 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ final class ClassBuilder
5050
private $implements = [];
5151

5252
/** @var string[] */
53-
private $namespaceUse = [];
53+
private $namespaceImports = [];
5454

5555
/** @var string[] */
5656
private $traits = [];
@@ -129,20 +129,47 @@ public function setImplements(string ...$interfaces): self
129129
return $this;
130130
}
131131

132-
public function setNamespaceUse(string ...$namespaces): self
132+
public function setNamespace(string $namespace): self
133133
{
134-
$this->namespaceUse = $namespaces;
134+
$this->namespace = $namespace;
135135

136136
return $this;
137137
}
138138

139-
public function setUseTrait(string ...$traits): self
139+
public function setNamespaceImports(string ...$namespaceImports): self
140+
{
141+
$this->namespaceImports = $namespaceImports;
142+
143+
return $this;
144+
}
145+
146+
/**
147+
* @deprecated Use setNamespaceImports()
148+
* @param string ...$namespaces
149+
* @return self
150+
*/
151+
public function setNamespaceUse(string ...$namespaces): self
152+
{
153+
return $this->setNamespaceImports(...$namespaces);
154+
}
155+
156+
public function setTraits(string ...$traits): self
140157
{
141158
$this->traits = $traits;
142159

143160
return $this;
144161
}
145162

163+
/**
164+
* @deprecated Use setTraits()
165+
* @param string ...$traits
166+
* @return self
167+
*/
168+
public function setUseTrait(string ...$traits): self
169+
{
170+
return $this->setTraits(...$traits);
171+
}
172+
146173
public function setConstants(ClassConstBuilder ...$constants): self
147174
{
148175
$this->constants = $constants;
@@ -208,21 +235,39 @@ public function getImplements(): array
208235
}
209236

210237
/**
238+
* @deprecated Use namespaceImports()
211239
* @return string[]
212240
*/
213241
public function getNamespaceUse(): array
214242
{
215-
return $this->namespaceUse;
243+
return $this->namespaceImports;
244+
}
245+
246+
/**
247+
* @return string[]
248+
*/
249+
public function getNamespaceImports(): array
250+
{
251+
return $this->namespaceImports;
216252
}
217253

218254
/**
255+
* @deprecated Use getTraits()
219256
* @return string[]
220257
*/
221258
public function getUseTrait(): array
222259
{
223260
return $this->traits;
224261
}
225262

263+
/**
264+
* @return string[]
265+
*/
266+
public function getTraits(): array
267+
{
268+
return $this->traits;
269+
}
270+
226271
/**
227272
* @return ClassConstBuilder[]
228273
*/
@@ -305,13 +350,23 @@ public function sortTraits(callable $sort): self
305350
* @param callable $sort (string $a, string $b)
306351
* @return $this
307352
*/
308-
public function sortNamespaceUse(callable $sort): self
353+
public function sortNamespaceImports(callable $sort): self
309354
{
310-
\usort($this->namespaceUse, $sort);
355+
\usort($this->namespaceImports, $sort);
311356

312357
return $this;
313358
}
314359

360+
/**
361+
* @deprecated Use sortNamespaceImports()
362+
* @param callable $sort
363+
* @return $this
364+
*/
365+
public function sortNamespaceUse(callable $sort): self
366+
{
367+
return $this->sortNamespaceImports($sort);
368+
}
369+
315370
/**
316371
* @param Parser $parser
317372
* @return NodeVisitor[]
@@ -328,8 +383,8 @@ public function generate(Parser $parser): array
328383
if ($this->namespace) {
329384
$visitors[] = new ClassNamespace($this->namespace);
330385
}
331-
if ($this->namespaceUse) {
332-
$visitors[] = new NamespaceUse(...$this->namespaceUse);
386+
if ($this->namespaceImports) {
387+
$visitors[] = new NamespaceUse(...$this->namespaceImports);
333388
}
334389

335390
$visitors[] = new ClassFile($this->classGenerator());
@@ -402,7 +457,7 @@ private function unpackNode(Node $node): void
402457
}
403458
break;
404459
case $node instanceof Node\Stmt\UseUse:
405-
$this->namespaceUse[] = $node->name instanceof Node\Name\FullyQualified
460+
$this->namespaceImports[] = $node->name instanceof Node\Name\FullyQualified
406461
? '\\' . $node->name->toString()
407462
: $node->name->toString();
408463
break;

tests/Builder/ClassBuilderTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ public function it_generates_class_for_empty_file(): void
4747
$classFactory
4848
->setFinal(true)
4949
->setExtends('BaseClass')
50-
->setNamespaceUse('Foo\\Bar')
50+
->setNamespaceImports('Foo\\Bar')
5151
->setImplements('\\Iterator', 'Bar')
52-
->setUseTrait('\\My\\TestTrait')
52+
->setTraits('\\My\\TestTrait')
5353
->setConstants(ClassConstBuilder::fromScratch('PRIV', 'private')->setPrivate());
5454

5555
$nodeTraverser = new NodeTraverser();
@@ -103,7 +103,7 @@ final class TestClass extends BaseClass implements \Iterator, Bar
103103
$this->assertTrue($classFactory->isFinal());
104104
$this->assertTrue($classFactory->isStrict());
105105
$this->assertFalse($classFactory->isAbstract());
106-
$this->assertSame(['\\My\\TestTrait'], $classFactory->getUseTrait());
106+
$this->assertSame(['\\My\\TestTrait'], $classFactory->getTraits());
107107

108108
$nodeTraverser = new NodeTraverser();
109109
$classFactory->injectVisitors($nodeTraverser, $this->parser);
@@ -191,11 +191,11 @@ final class TestClass
191191

192192
$classFactory = ClassBuilder::fromNodes(...$ast);
193193

194-
$classFactory->sortNamespaceUse(function (string $a, string $b) {
194+
$classFactory->sortNamespaceImports(function (string $a, string $b) {
195195
return $a <=> $b;
196196
});
197197

198-
$namespaceUse = $classFactory->getNamespaceUse();
198+
$namespaceUse = $classFactory->getNamespaceImports();
199199
$this->assertCount(4, $namespaceUse);
200200
$this->assertSame('My\\A', $namespaceUse[0]);
201201
$this->assertSame('My\\B', $namespaceUse[1]);
@@ -250,7 +250,7 @@ final class TestClass
250250
return $a <=> $b;
251251
});
252252

253-
$useTrait = $classFactory->getUseTrait();
253+
$useTrait = $classFactory->getTraits();
254254
$this->assertCount(4, $useTrait);
255255
$this->assertSame('My\\A', $useTrait[0]);
256256
$this->assertSame('My\\B', $useTrait[1]);

0 commit comments

Comments
 (0)