Skip to content

Commit

Permalink
更新
Browse files Browse the repository at this point in the history
  • Loading branch information
yunwuxin committed Jun 23, 2024
1 parent 4690074 commit b32ae65
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 9 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
],
"require": {
"topthink/framework": "^6.0 || ^8.0",
"phpdocumentor/reflection-docblock": "^5.0",
"phpdocumentor/reflection-docblock": "^5.4",
"ergebnis/classy": "^1.1"
},
"autoload": {
Expand Down
45 changes: 37 additions & 8 deletions src/ModelGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@
use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
use phpDocumentor\Reflection\DocBlock\Serializer as DocBlockSerializer;
use phpDocumentor\Reflection\DocBlock\StandardTagFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\AbstractPHPStanFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\MethodFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\ParamFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\PropertyFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\PropertyReadFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\PropertyWriteFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\ReturnFactory;
use phpDocumentor\Reflection\DocBlock\Tags\Factory\VarFactory;
use phpDocumentor\Reflection\DocBlockFactory;
use phpDocumentor\Reflection\FqsenResolver;
use phpDocumentor\Reflection\TypeResolver;
Expand Down Expand Up @@ -340,13 +348,41 @@ protected function createPhpDocs()
$context = (new ContextFactory())->createFromReflector($this->reflection);
$summary = "Class {$this->class}";

$fqsenResolver = new FqsenResolver();
$tagFactory = new StandardTagFactory($fqsenResolver);
$descriptionFactory = new DescriptionFactory($tagFactory);
$typeResolver = new TypeResolver($fqsenResolver);

$phpstanTagFactory = new AbstractPHPStanFactory(
new ParamFactory($typeResolver, $descriptionFactory),
new VarFactory($typeResolver, $descriptionFactory),
new ReturnFactory($typeResolver, $descriptionFactory),
new PropertyFactory($typeResolver, $descriptionFactory),
new PropertyReadFactory($typeResolver, $descriptionFactory),
new PropertyWriteFactory($typeResolver, $descriptionFactory),
new MethodFactory($typeResolver, $descriptionFactory)
);

$tagFactory->addService($descriptionFactory);
$tagFactory->addService($typeResolver);

$tagFactory->registerTagHandler('param', $phpstanTagFactory);
$tagFactory->registerTagHandler('var', $phpstanTagFactory);
$tagFactory->registerTagHandler('return', $phpstanTagFactory);
$tagFactory->registerTagHandler('property', $phpstanTagFactory);
$tagFactory->registerTagHandler('property-read', $phpstanTagFactory);
$tagFactory->registerTagHandler('property-write', $phpstanTagFactory);
$tagFactory->registerTagHandler('method', $phpstanTagFactory);

$blockFactory = new DocBlockFactory($descriptionFactory, $tagFactory);

$properties = [];
$methods = [];
$tags = [];

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

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

}

$fqsenResolver = new FqsenResolver();
$tagFactory = new StandardTagFactory($fqsenResolver);
$descriptionFactory = new DescriptionFactory($tagFactory);

$tagFactory->addService($descriptionFactory);
$tagFactory->addService(new TypeResolver($fqsenResolver));

foreach ($this->properties as $name => $property) {
if (in_array($name, $properties)) {
continue;
Expand Down

0 comments on commit b32ae65

Please sign in to comment.