From c27082bbebbd2d39374e17692073bd96a8fdb014 Mon Sep 17 00:00:00 2001 From: Damir Date: Tue, 13 Dec 2022 12:32:25 +0100 Subject: [PATCH] Example --- README.md | 23 +++++++++++++++++++++++ src/Attributes/DynamicBuilder.php | 15 +++++++++++++++ src/GeneratorHttp.php | 3 +++ 3 files changed, 41 insertions(+) create mode 100644 src/Attributes/DynamicBuilder.php diff --git a/README.md b/README.md index 91cf57a..63330a9 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,15 @@ class Controller { public function get(#[Parameter("Parameter description")] int $id): JsonResponse { // ... } + + #[ + DynamicBuilder(MyFrameworkResolver::class), + Property(PropertyType::REF, "prop4", ref: RefSchema::class) + Response(ref: SchemaName::class, description: "Response description") + ] + public function getSomethingElse(#[Parameter("Parameter description")] int $id): JsonResponse { + // ... + } } #[ @@ -119,3 +128,17 @@ Will generate } } ``` + +``` +class MyFrameworkResolver +{ + public function build(PathMethodBuilder $pathBuilder, $instance, $parameters, $reflectionClass, $method) + { + // Here you can add your own logic to build the path + // How to add dependencies? Laravel uses global container so it can be done like this: + $route = Routes::getRoutes()->findByControllerAndMethodName()->getUri(); + + $pathBuilder->setRoute($route); + } +} +``` \ No newline at end of file diff --git a/src/Attributes/DynamicBuilder.php b/src/Attributes/DynamicBuilder.php new file mode 100644 index 0000000..1e7bdd2 --- /dev/null +++ b/src/Attributes/DynamicBuilder.php @@ -0,0 +1,15 @@ + $pathBuilder->setRoute($instance, $parameters), + DynamicBuilder::class => DynamicBuilder::getBuilder()->build($pathBuilder, $instance, $parameters, $reflectionClass, $method), RequestBody::class => $pathBuilder->setRequestBody($instance), Property::class => $pathBuilder->addProperty($instance), PropertyItems::class => $pathBuilder->setPropertyItems($instance),