尝试读取数组 属性 "title"(错误异常)Laravel Php
Attempt to read property "title" on array (Error Exception) Laravel Php
when I try to run the following it gives the Error Exception where it can't read the title on array. Can you let me know how to fix this?
**我的 post 来自 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);
});
}
}
我的路线class代码是
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()
);
}
});
The code is right as far as i know, I just don't know if there is something I need to add or do something to make the error go away.
我认为错误真的在这里
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()
);
}
错误在这个 foreach 循环内部
foreach ($files as $file) {
$document[] = YamlFrontMatter::parseFile($file);
$posts[]= new Post(
$document->title,
$document->excerpt,
$document->date,
$document->body()
);
}
具体在这里
$document[] = YamlFrontMatter::parseFile($file);
您将新的 object 添加到数组 $document 中并在此处
$document->title,
您尝试直接从 $document 访问标题,您需要指定数组的索引才能访问具有属性的 object,类似这样
$document[0]->title,
或者您可以将第一部分重写为
$document = YamlFrontMatter::parseFile($file);
when I try to run the following it gives the Error Exception where it can't read the title on array. Can you let me know how to fix this?
**我的 post 来自 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);
});
}
}
我的路线class代码是
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()
);
}
});
The code is right as far as i know, I just don't know if there is something I need to add or do something to make the error go away.
我认为错误真的在这里
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()
);
}
错误在这个 foreach 循环内部
foreach ($files as $file) {
$document[] = YamlFrontMatter::parseFile($file);
$posts[]= new Post(
$document->title,
$document->excerpt,
$document->date,
$document->body()
);
}
具体在这里
$document[] = YamlFrontMatter::parseFile($file);
您将新的 object 添加到数组 $document 中并在此处
$document->title,
您尝试直接从 $document 访问标题,您需要指定数组的索引才能访问具有属性的 object,类似这样
$document[0]->title,
或者您可以将第一部分重写为
$document = YamlFrontMatter::parseFile($file);