Skip to content

[BUG]: php validation code never executes #2770

Open
@uuf6429

Description

@uuf6429

Issue Type

quicktype PHP output

Context (Environment, Version, Language)

Input Format: JSON Schema
Output Language: PHP

CLI, npm, or app.quicktype.io: app.quicktype.io
Version: n/a

Description

Just gave this tool a quick look and tried the online example, which generates code like so:

    /**
     * @param float|null
     * @return bool
     * @throws Exception
     */
    public static function validateLatitude(?float $value): bool {
        if (!is_null($value)) {
            if (!is_float($value)) {
                throw new Exception("Attribute Error:Coordinate::latitude");
            }
        }
        return true;
    }

PHP already verifies the type of value passed to $value, and in non-strict-type mode, it automatically typecasts the value.
In short $value is always guaranteed to match ?float, and therefore the rest of the method doesn't make any sense.

Without strict_types: https://3v4l.org/hmk19 and with strict_types: https://3v4l.org/mNaCv

(note: there seems to be other redundant code, such defining the return type and then adding a /* some_type */ after return - totally non-standard and unhelpful)

Input Data

Used PHP demo

Expected Behaviour / Output

Less redundant / dead code should be generated.

Current Behaviour / Output

A validation guard is generated that never executes.

Steps to Reproduce

Use PHP demo

Possible Solution

IMO the public static validation method should not be generated, but at least it should not contain the aforementioned dead code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions