How to fix Access to an undefined property error in laravel-validated-dto class?

69 Views Asked by At

On laravel 10 site I added with wendelladriel/laravel-validated-dto package app/DTO/ItemsFilterDTO.php class with methods :

<?php

namespace App\DTO;

use WendellAdriel\ValidatedDTO\Casting\IntegerCast;
use WendellAdriel\ValidatedDTO\Casting\StringCast;
use WendellAdriel\ValidatedDTO\SimpleDTO;

class ItemsFilterDTO extends SimpleDTO
{
    ...
    /**
     * By which field(s) data are returned
     *
     * @var string
     */
    public ?string $sortBy = '';

    /**
     * @return array
     */
    protected function casts(): array
    {
        return [
            ...
            'sortBy' => new StringCast // ItemStatus
        ];
    }

But on first using of this var in controller :

$filtersDTO->sortBy

I got error :

Access to an undefined property WendellAdriel\ValidatedDTO\SimpleDTO::$sortBy.
 ...

How can I fix this error ? Did I declare sortBy in wrong way ?

"laravel/framework": "^10.34.2",
"wendelladriel/laravel-validated-dto": "^3.3"
"nunomaduro/larastan": "^2.6.4",

Thanks in advance!

1

There are 1 best solutions below

0
Ondřej Mirtes On

You should make sure that PHPStan understands $filtersDTO is ItemsFilterDTO.

See: