#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.
Вот так:
Также вы можете обновить свой 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. выдает ошибку: константное выражение содержит недопустимые операции в …