尝试读取数组上的属性“标题”(错误异常)Laravel Php
Posted
技术标签:
【中文标题】尝试读取数组上的属性“标题”(错误异常)Laravel Php【英文标题】:Attempt to read property "title" on array (Error Exception) Laravel Php 【发布时间】:2021-09-14 07:47:00 【问题描述】:当我尝试运行以下命令时,它会出现无法读取数组标题的错误异常。你能告诉我如何解决这个问题吗?
**我来自 app/models 的邮政编码如下**
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\ModelNotFoundException; //
use Illuminate\Support\Facades\File;
class Post
public $title;
public $excerpt;
public $date;
public $body;
public function __construct($title, $excerpt, $date, $body)
$this-> title = $title; //this is where the error is occurring
$this-> excerpt = $excerpt;
$this-> date = $date;
$this-> body = $body;
public static function all()
$files = File::files(resource_path("postss/"));
return array_map(function ($file)
return $file-> getContents();
, $files);
public static function find($slug)
base_path();
if (!file_exists($path = resource_path("postss/$slug.html")))
throw new ModelNotFoundException();
return cache()-> remember("posts.$slug", 7 , function () use ($path)
return file_get_contents($path);
);
我的路线类代码是
Route::get('/', function ()
$files = File::files(resource_path("postss"));
$posts =[];
foreach ($files as $file)
$document[] = YamlFrontMatter::parseFile($file);
$posts[]= new Post(
$document->title,
$document->excerpt,
$document->date,
$document->body()
);
);
据我所知,代码是正确的,我只是不知道是否需要添加一些东西或做些什么来使错误消失。
【问题讨论】:
你也可以发布堆栈跟踪吗? 【参考方案1】:错误在这个 foreach 循环中
foreach ($files as $file)
$document[] = YamlFrontMatter::parseFile($file);
$posts[]= new Post(
$document->title,
$document->excerpt,
$document->date,
$document->body()
);
特别是这里
$document[] = YamlFrontMatter::parseFile($file);
您将新对象添加到数组 $document 中并在此处
$document->title,
你尝试直接从 $document 访问标题,你需要指定数组的索引来访问具有属性的对象,像这样
$document[0]->title,
或者你可以将第一部分改写成
$document = YamlFrontMatter::parseFile($file);
【讨论】:
谢谢你,卢卡斯。我明白了,它现在可以工作了。【参考方案2】:我认为错误确实在这里
foreach ($files as $file)
// you load an array here !!!
$document[] = YamlFrontMatter::parseFile($file);
$posts[]= new Post(
$document->title, // then you use $document as a scalar?
$document->excerpt,
$document->date,
$document->body()
);
我认为你可能需要这样做
foreach ($files as $file)
// you load an array here !!!
$document = YamlFrontMatter::parseFile($file);
$posts[]= new Post(
$document->title,
$document->excerpt,
$document->date,
$document->body()
);
【讨论】:
以上是关于尝试读取数组上的属性“标题”(错误异常)Laravel Php的主要内容,如果未能解决你的问题,请参考以下文章
Dataproc 上的 Jupyterlab - 403 错误 - 无法读取未定义的属性“路径”
FluentNHibernate 异常:复合用户类型上的“属性映射的列数错误”
尝试在 Laravel 8 中读取 null 上的属性“名称”