Skip to content

Commit 898bfc6

Browse files
committed
Se han añadido los métodos addMember() y getMembers() a la clase ClassBuilder.
1 parent bb588c9 commit 898bfc6

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/ClassBuilder.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
namespace ThenLabs\ClassBuilder;
55

66
use Closure;
7+
use ThenLabs\ClassBuilder\Model\AbstractClassMember;
78
use ThenLabs\ClassBuilder\Model\CommentTrait;
89
use ThenLabs\ClassBuilder\Model\AbstractTrait;
910
use ThenLabs\ClassBuilder\Model\Property;
@@ -180,7 +181,7 @@ public function addProperty(string $name): Property
180181
$property = new Property($name);
181182
$property->setClassBuilder($this);
182183

183-
$this->members[] = $property;
184+
$this->addMember($property);
184185

185186
return $property;
186187
}
@@ -214,7 +215,7 @@ public function addConstant(string $name): Constant
214215
$constant = new Constant($name);
215216
$constant->setClassBuilder($this);
216217

217-
$this->members[] = $constant;
218+
$this->addMember($constant);
218219

219220
return $constant;
220221
}
@@ -243,6 +244,16 @@ public function removeConstant(string $name): void
243244
}
244245
}
245246

247+
public function addMember(AbstractClassMember $member): void
248+
{
249+
$this->members[] = $member;
250+
}
251+
252+
public function getMembers(): array
253+
{
254+
return $this->members;
255+
}
256+
246257
public function addMethod(string $name, ?Closure $closure = null): Method
247258
{
248259
$method = new Method($name);
@@ -252,7 +263,7 @@ public function addMethod(string $name, ?Closure $closure = null): Method
252263
$method->setClosure($closure);
253264
}
254265

255-
$this->members["method_{$name}"] = $method;
266+
$this->addMember($method);
256267

257268
return $method;
258269
}

tests/ClassBuilderTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Doctrine\Common\Annotations\AnnotationReader;
1919
use ReflectionClass;
2020
use Closure;
21+
use ThenLabs\ClassBuilder\Model\Method;
2122

2223
setTestCaseClass(TestCase::class);
2324
setTestCaseNamespace(__NAMESPACE__);
@@ -311,6 +312,21 @@ class {$class} {}
311312
$this->assertNull($this->builder->getProperty(uniqid()));
312313
});
313314

315+
test('$builder->addMember($member)', function () {
316+
$method = new Method('myMethod');
317+
$method->setClassBuilder($this->builder);
318+
$method->setClosure(function () {
319+
return 'myValue';
320+
});
321+
322+
$this->builder->addMember($method);
323+
324+
$instance = $this->builder->newInstance();
325+
326+
$this->assertEquals('myValue', $instance->myMethod());
327+
$this->assertContains($method, $this->builder->getMembers());
328+
});
329+
314330
testCase('$builder->implements("Interface1", "Interface2", ...) causes $builder->addInterface("Interface1"); $builder->addInterface("Interface2"); ...', function () {
315331
test(function () {
316332
$builder = $this->getMockBuilder(ClassBuilder::class)

0 commit comments

Comments
 (0)