Если вы посмотрите на исходный код Laravel, вы увидите разницу.
Класс Model, расширенный моделями приложений, реализует интерфейс ArrayAccess
, который, помимо прочего, принудительно вызывает классчтобы определить метод offsetGet
.
В Laravel 5.4 метод offsetGet
выглядит следующим образом:
public function offsetGet($offset)
{
return $this->$offset;
}
, что означает, что если вы вызываете $model['fillable']
, вы фактически вызываете $model->offsetGet('fillable')
который на самом деле возвращает свойство fillable
класса.
Я не смог найти тег Laravel 5.6, но я почти уверен, что это тот же код, что и Laravel 5.5.45.В этой версии метод offsetGet
был изменен на:
public function offsetGet($offset)
{
return $this->getAttribute($offset);
}
, что означает, что он фактически возвращает атрибут, если он найден, или ноль в противном случае.