Я использую красноречивые модели в Laravel 5.4 В документации, я вижу:Laravel/Eloquent советует переопределить свойство свойства?
Вы можете также использовать метод создания, чтобы сохранить новую модель в одной линии. Экземпляр вставленной модели будет возвращен вам из метода . Тем не менее, перед этим вам нужно будет указать либо нулевой атрибут , либо все остальные модели Eloquent для защиты от массового присвоения по умолчанию.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name'];
}
Однако $ заполняемых свойство уже определено в черта, используемой всеми моделями:
trait GuardsAttributes
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [];
...
документация PHP ясно о TRAITS свойств:
Если trait определяет свойство, тогда класс не может определить свойство с тем же именем, в противном случае выдается ошибка. Это E_STRICT, если определение класса совместимо (та же видимость и начальное значение) или фатальная ошибка в противном случае.
Является ли документация Laravel неправильной в отношении реализации adivsed?
Неправильно. У вас есть класс 'A', и вы используете черту внутри этого класса. Trait = копирование с помощью языка. Класс 'A' не может содержать' protected $ fillable' - и это не так, потому что ваш класс 'A'' Illuminate \ Database \ Eloquent \ Model'. До сих пор так хорошо, но теперь вы расширяете «Модель», и вы можете переопределить свойство «protected $ fillable». В правилах наследования это допускается. Ваш вопрос действителен, но так же есть и выдержки из документации. – Mjh