Skip to content

Commit b32ae65

Browse files
committed
更新
1 parent 4690074 commit b32ae65

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
],
1111
"require": {
1212
"topthink/framework": "^6.0 || ^8.0",
13-
"phpdocumentor/reflection-docblock": "^5.0",
13+
"phpdocumentor/reflection-docblock": "^5.4",
1414
"ergebnis/classy": "^1.1"
1515
},
1616
"autoload": {

src/ModelGenerator.php

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@
88
use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
99
use phpDocumentor\Reflection\DocBlock\Serializer as DocBlockSerializer;
1010
use phpDocumentor\Reflection\DocBlock\StandardTagFactory;
11+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\AbstractPHPStanFactory;
12+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\MethodFactory;
13+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\ParamFactory;
14+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\PropertyFactory;
15+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\PropertyReadFactory;
16+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\PropertyWriteFactory;
17+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\ReturnFactory;
18+
use phpDocumentor\Reflection\DocBlock\Tags\Factory\VarFactory;
1119
use phpDocumentor\Reflection\DocBlockFactory;
1220
use phpDocumentor\Reflection\FqsenResolver;
1321
use phpDocumentor\Reflection\TypeResolver;
@@ -340,13 +348,41 @@ protected function createPhpDocs()
340348
$context = (new ContextFactory())->createFromReflector($this->reflection);
341349
$summary = "Class {$this->class}";
342350

351+
$fqsenResolver = new FqsenResolver();
352+
$tagFactory = new StandardTagFactory($fqsenResolver);
353+
$descriptionFactory = new DescriptionFactory($tagFactory);
354+
$typeResolver = new TypeResolver($fqsenResolver);
355+
356+
$phpstanTagFactory = new AbstractPHPStanFactory(
357+
new ParamFactory($typeResolver, $descriptionFactory),
358+
new VarFactory($typeResolver, $descriptionFactory),
359+
new ReturnFactory($typeResolver, $descriptionFactory),
360+
new PropertyFactory($typeResolver, $descriptionFactory),
361+
new PropertyReadFactory($typeResolver, $descriptionFactory),
362+
new PropertyWriteFactory($typeResolver, $descriptionFactory),
363+
new MethodFactory($typeResolver, $descriptionFactory)
364+
);
365+
366+
$tagFactory->addService($descriptionFactory);
367+
$tagFactory->addService($typeResolver);
368+
369+
$tagFactory->registerTagHandler('param', $phpstanTagFactory);
370+
$tagFactory->registerTagHandler('var', $phpstanTagFactory);
371+
$tagFactory->registerTagHandler('return', $phpstanTagFactory);
372+
$tagFactory->registerTagHandler('property', $phpstanTagFactory);
373+
$tagFactory->registerTagHandler('property-read', $phpstanTagFactory);
374+
$tagFactory->registerTagHandler('property-write', $phpstanTagFactory);
375+
$tagFactory->registerTagHandler('method', $phpstanTagFactory);
376+
377+
$blockFactory = new DocBlockFactory($descriptionFactory, $tagFactory);
378+
343379
$properties = [];
344380
$methods = [];
345381
$tags = [];
346382

347383
try {
348384
//读取文件注释
349-
$phpdoc = DocBlockFactory::createInstance()->create($this->reflection, $context);
385+
$phpdoc = $blockFactory->create($this->reflection, $context);
350386

351387
$summary = $phpdoc->getSummary();
352388
$properties = [];
@@ -373,13 +409,6 @@ protected function createPhpDocs()
373409

374410
}
375411

376-
$fqsenResolver = new FqsenResolver();
377-
$tagFactory = new StandardTagFactory($fqsenResolver);
378-
$descriptionFactory = new DescriptionFactory($tagFactory);
379-
380-
$tagFactory->addService($descriptionFactory);
381-
$tagFactory->addService(new TypeResolver($fqsenResolver));
382-
383412
foreach ($this->properties as $name => $property) {
384413
if (in_array($name, $properties)) {
385414
continue;

0 commit comments

Comments
 (0)