PhpStorm: {Model} и временные метки определяют одинаковые временные метки свойств (Laravel)

#laravel #phpstorm

#laravel #phpstorm

Вопрос:

PhpStorm версии 2020.3 показывает ошибку в $timestamps свойстве в моей модели Laravel:

{Model} и временные метки определяют одинаковые временные метки свойств

введите описание изображения здесь

Комментарии:

1. Я думаю, что метки времени — это зарезервированное ключевое слово, вы не можете его использовать.

2. @AbdullahAlMamun, в Laravel общедоступная переменная $timestamps в моделях сообщает, что модель не использует created_at и updated_at — по умолчанию $timestamps = true. Это не зарезервированное ключевое слово. У меня такая же проблема, и я думаю, что это ошибка в последнем обновлении, и она сопоставляется с vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php . Однако это не блокировщик, и все работает как обычно, по крайней мере, в моем случае.

3. @ Strabek, да, вы правы. Возможно, это ошибка phpstorm.

Ответ №1:

Это ошибка, и она появилась в новой версии PhpStorm.

Отключить предупреждение невозможно, поскольку это проверка аннотатора. Я также не рекомендую изменять ваш код с единственной целью исправления этого предупреждения, поскольку это ошибка IDE, и она будет устранена в следующем патче. Если это на самом деле не вызывает каких-либо побочных эффектов, просто подождите, пока не будет выпущен патч!


Обновить

Эта ошибка была исправлена в PhpStorm 2020.3.1.

Комментарии:

1. впервые мне удается решить проблему, ничего не делая, не тратя часы на поиски ответа! Спасибо

2. PhpStorm абсолютно непобедим с точки зрения intellisense и мощности рефакторинга, но это действительно заставляет меня чувствовать себя прикованным, когда кажется, что каждое обновление вводит ошибку, подобную этой, которую я должен ждать, пока они исправят: (

Ответ №2:

Похоже, ошибка PhpStorm.

Если это вас беспокоит, вы можете перейти public $timestamps = false; на

 public function usesTimestamps() : bool{
    return false;
}
 

Комментарии:

1. Я бы сказал, что это не проблема PHP storm, а проблема Laravel. php.net/traits#language.oop5.interfaces.examples.ex1 Ваше решение, вероятно, действительно, хотя, если остальная часть кода не имеет прямого доступа к свойству, поскольку оно объявлено общедоступным. Переназначение свойства в конструкции кажется хуже, но, возможно, более надежным?

2. @hatef прав, вы не должны менять свой код, я просто нахожу это очень раздражающим визуально, мне действительно пришлось вернуться, поскольку моя текущая версия xdebug несовместима с этой версией PhpStorm, и #at#Johan Я не уверен, что я просто снова сделал это из-за предупреждения, но не имеетреальная выгода, а также я не вижу никакого «супер» негатива, поскольку метод является общедоступным

3. @Johan, это должно быть ошибка PhpStorm. В PHP класс не может использовать признак и переопределять свойство из этого признака. Но это не так, переопределение является подклассом класса, использующего признак. И это абсолютно законно.

4. @dRamentol Спасибо, что исправили это. Если обновление устраняет проблему, это указывает на то, кто виноват 🙂

Ответ №3:

Это ошибка PhpStorm, я исправил с помощью define as property в классе phpdoc.

Вот так:

Исправлена ошибка Php storm

Также вы можете обновить свой PhpStorm.

Ответ №4:

Это исправлено в предварительном просмотре PhpStrom 2020.3.1 https://blog.jetbrains.com/phpstorm/2020/12/phpstorm-2020-3-1-preview /

Ответ №5:

Очень просто, добавьте (bool) или (boolean), посмотрите: public $timestamps = (boolean) false;

Комментарии:

1. выдает ошибку: константное выражение содержит недопустимые операции в …