cebe / php-openapi

Read and write OpenAPI yaml/json files and make the content accessible in PHP objects.
MIT License
464 stars 87 forks source link

Referenced Parameters compiling to Object instead of Array #155

Open bplainia opened 2 years ago

bplainia commented 2 years ago

I am having an issue with parameters being compiled as an object instead of an array. This is invalid OpenAPI. I am using references heavily. I have many different yaml files that are referenced by the primary spec so it is easy to maintain. Each endpoint has parameters, which usually point to another file since they are used everywhere. When a parameter reference points to something within the same file, the compiled parameter

Example Code (one of the referenced files) that does not work. It compiles to an object that has numbered keys.

'/v1/user':
  get:
    parameters:
      - $ref: 'parameters.yaml#/components/parameters/ApiVersion'
      - $ref: 'parameters.yaml#/components/parameters/Page'

Example Code (one of the referenced files) that does work. It compiles to an array.

'/v1/user':
  get:
    parameters:
      - $ref: 'parameters.yaml#/components/parameters/ApiVersion'
      - $ref: 'parameters.yaml#/components/parameters/Page'
      - $ref: '#/components/parameters/User'
cebe commented 2 years ago

which part of the example code gets parsed as object instead of array? Could you provide a complete test set of files that reproduce the issue?

bplainia commented 2 years ago

@cebe Please see https://github.com/bplainia/php-openapi-test and follow the instructions to build the compiled spec.

Aribros commented 9 months ago

@cebe Please see https://github.com/bplainia/php-openapi-test and follow the instructions to build the compiled spec.

I have investigated this but could not reproduce this. I also added a test to confirm all you have said but all passed.

bplainia commented 9 months ago

It's been a while since I looked at this. I'm on a different project now and using swagger-php. I updated my repo with the compiled yaml file. It still is doing it, though now both instances are generating objects. This is with a fresh clone and I ran composer api:build