envorradev/file-class-resolver

0.1 2022-09-10 14:31 UTC

This package is auto-updated.

Last update: 2024-09-14 03:58:42 UTC


README

一个简单的工具,用于根据文件路径解析完全限定的类名和类的实例。

安装

$ composer require envorradev/file-class-resolver

用法

以下示例将使用以下示例类

namespace SomeNamespace\SomeFolder;

class SomeClass {
    public function __construct(
        public string $aRequiredString,
        public int $anOptionalInt = 5,
    ) {}
}
$filename = __DIR__.'/SomeFolder/SomeClass.php';

它们还假设您已通过

use Envorra\FileClassResolver\ClassResolver;

解析完全限定的类名

ClassResolver::resolve($filename);

返回

'SomeNamespace\SomeFolder\SomeClass'

创建实例

无参数要求的类

ClassResolver::make($someOtherClassPath);

有参数要求的类

将参数作为数组作为 make 方法的参数传递

ClassResolver::make($filename, ['string value', 10]);

只需传递所需的参数

ClassResolver::make($filename, ['string value']);

您可以按名称传递参数

ClassResolver::make($filename, ['aRequiredString' => 'string value', 'anOptionalInt' => 7]);

当使用命名参数时,顺序无关紧要

ClassResolver::make($filename, ['anOptionalInt' => 7, 'aRequiredString' => 'string value']);

获取解析器实例

ClassResolver::resolver($filename);

返回一个 ClassResolver 实例。

可用的 ClassResolver 方法

在以下示例中

$resolver = ClassResolver::resolve($filename);

getClass(): ?string

获取完全限定的类名。

等同于 ClassResolver::resolve($filename)$resolver->getFullyQualifiedClassName()

$resolver->getClass();

返回

'SomeNamespace\SomeFolder\SomeClass'

getClassInstance(array $parameters = []): ?object

获取类的实例。

等同于 ClassResolver::make($filename, $parameters)

$resolver->getClassInstance(['string']);

返回 SomeClass 的实例

getClassName(): ?string

仅获取类名。

$resolver->getClassName();

返回

'SomeClass'

getClassNode(): \PhpParser\Node\Stmt\Class_

获取 \PhpParser\Node\Stmt\Class_ 节点。

参见: nikic/php-parserClass_

$resolver->getClassNode();

返回类似以下的内容

PhpParser\Node\Stmt\Class_ {#8563
    +name: PhpParser\Node\Identifier {#8550
        +name: "SomeClass",
    },
    +stmts: [
        PhpParser\Node\Stmt\ClassMethod {#8562
            +flags: 1,
            +byRef: false,
            +name: PhpParser\Node\Identifier {#8551
                +name: "__construct",
            },
            +params: [
                PhpParser\Node\Param {#8554
                    +type: PhpParser\Node\Identifier {#8553
                        +name: "string",
                    },
                    +byRef: false,
                    +variadic: false,
                    +var: PhpParser\Node\Expr\Variable {#8552
                        +name: "aRequiredString",
                    },
                    +default: null,
                    +flags: 1,
                    +attrGroups: [],
                },
                PhpParser\Node\Param {#8557
                    +type: PhpParser\Node\Identifier {#8556
                        +name: "int",
                    },
                    +byRef: false,
                    +variadic: false,
                    +var: PhpParser\Node\Expr\Variable {#8555
                        +name: "anOptionalInt",
                    },
                    +default: null,
                    +flags: 1,
                    +attrGroups: [],
                },
            ],
            +returnType: null,
            +stmts: [],
            +attrGroups: [],
        },
    ],
    +attrGroups: [],
    +namespacedName: null,
    +flags: 0,
    +extends: null,
    +implements: [],
}

getFullyQualifiedClassName(): ?string

获取完全限定的类名。

等同于 ClassResolver::resolve($filename)$resolver->getClass()

$resolver->getFullyQualifiedClassName();

返回

'SomeNamespace\SomeFolder\SomeClass'

getNamespace(): ?string

仅获取类的命名空间。

$resolver->getNamespace();

返回

'SomeNamespace\SomeFolder'

getNamespaceNode(): \PhpParser\Node\Stmt\Namespace_

获取 \PhpParser\Node\Stmt\Namespace_ 节点。

参见: nikic/php-parserNamespace_

$resolver->getNamespaceNode();

返回类似以下的内容

PhpParser\Node\Stmt\Namespace_ {#8549
    +name: PhpParser\Node\Name {#8548
        +parts: [
            "SomeNamespace",
            "SomeFolder",
        ],
    },
    +stmts: [
        PhpParser\Node\Stmt\Class_ {#8563
            +name: PhpParser\Node\Identifier {#8550
                +name: "SomeClass",
            },
            +stmts: [
                PhpParser\Node\Stmt\ClassMethod {#8562
                    +flags: 1,
                    +byRef: false,
                    +name: PhpParser\Node\Identifier {#8551
                        +name: "__construct",
                    },
                    +params: [
                        PhpParser\Node\Param {#8554
                            +type: PhpParser\Node\Identifier {#8553
                                +name: "string",
                            },
                            +byRef: false,
                            +variadic: false,
                            +var: PhpParser\Node\Expr\Variable {#8552
                                +name: "aRequiredString",
                            },
                            +default: null,
                            +flags: 1,
                            +attrGroups: [],
                        },
                        PhpParser\Node\Param {#8557
                            +type: PhpParser\Node\Identifier {#8556
                                +name: "int",
                            },
                            +byRef: false,
                            +variadic: false,
                            +var: PhpParser\Node\Expr\Variable {#8555
                                +name: "anOptionalInt",
                            },
                            +default: null,
                            +flags: 1,
                            +attrGroups: [],
                        },
                    ],
                    +returnType: null,
                    +stmts: [],
                    +attrGroups: [],
                },
            ],
            +attrGroups: [],
            +namespacedName: null,
            +flags: 0,
            +extends: null,
            +implements: [],
        },
    ],
}