name = $name; $this->description = $description; $this->parameters = $parameters; $this->type = $type; } public function jsonSerialize() { $params = []; foreach( $this->parameters as $parameter ) { $params[ $parameter->name ] = $parameter; } $required = array_filter( $this->parameters, function( $param ) { return $param->required; } ); $required = array_map( function( $param ) { return $param->name; }, $required ); $json = [ 'name' => $this->name, 'description' => $this->description, 'parameters' => [ 'type' => 'object', 'properties' => $params, ], 'required' => $required ]; return $json; } }