Estou usando o PHPStan em um aplicativo Laravel 10 e configurei isso para um nível bastante alto (boa prática, eu acho) - encontrei alguns erros e estou tentando descobrir a melhor maneira de resolvê-los.
------ ------------------------------------------------------------------------------------------
Line app/Actions/Reports/SetReportStatusAction.php
------ ------------------------------------------------------------------------------------------
17 Property App\Models\Report::$succeeded_at (Carbon\Carbon|null) does not accept int|null.
<?php
declare(strict_types=1);
namespace App\Actions\Reports;
use App\Models\Report;
use Stripe\Reporting\ReportRun;
class SetReportStatusAction
{
public function __invoke(Report $report): void
{
/** @var ReportRun $stripeObject */
$stripeObject = $report->getStripeObject();
$report->status = $stripeObject->status;
$report->succeeded_at = $stripeObject->succeeded_at ?? null;
}
}
Relatório.php
<?php
namespace App\Models;
// use statements hidden from view
class Report extends Model implements Transitionable
{
use HasFactory, HasStates, HasStripeObject;
protected $fillable = [
'stripe_id',
'report_type',
'status',
'parameters',
'expires_at',
'succeeded_at',
];
protected $casts = [
'parameters' => 'json',
'expires_at' => 'datetime',
'succeeded_at' => 'datetime',
];
}
Os dados succeeded_at
vêm de um evento de webhook e estarão em um formato semelhante a este - um carimbo de data/hora
"succeeded_at": 1706786551
Resultado esperado – PHPStan não detecta erros nos dois arquivos em questão
Resultado real - Receba um erro do phpstan 'Property App\Models\Report::$succeeded_at (Carbon\Carbon|null) não aceita int|null.'