传递给 App\Models\Model::__construct() 必须是实例



我试图让主模型出现此错误:

致命错误:未捕获的类型错误:传递给 App\Models\Model::__construct(( 的参数 1 必须是 App\Models\Database 的实例,给定 App\Database 的实例,在第 14 行的 C:\xampp\htdocs\Work\AppDarbNajah\App\Controllers\ArticlesControllers.php 中调用,并在 C:\xampp\htdocs\Work\AppDarbNajah\App\Models\Model.php:9 堆栈跟踪:#0 C:\xampp\htdocs\Work\AppDarbNajah\App\Controllers\ArticlesController.php(14(: App\Models\Model->__construct(Object(App\Database(( #1 C:\xampp\htdocs\Work\AppDarbNajah\Public\index.php(22(: App\Controllers\ArticlesController->loadArticles(( #2 {main} 扔在第 9 行 C:\xampp\htdocs\Work\AppDarbNajah\App\Models\Model.php

我的代码是 1- 型号

<?php
namespace AppModels;

class Model{
protected $db;
protected $table;
public function __construct(Database $db){
$this->db = $db;
}
public function query($statement, $attributes= null){
return $this->db->query($statement);
}
}   

2- 文章控制器

<?php
namespace AppControllers;

use AppModelsArticlesModel;
class ArticlesController{
public function loadArticles() {
$app = new App();
$art_table = new ArticlesModel($app->getDb());
return $art_table->load();

}
}

由于class Modelnamespace AppModels;因此总共AppModelsDatabaseDatabase的(相对(引用。

您现在可以将引用设为绝对:

__construct(AppDatabase $db) { ...

或将use AppDatabase;放在命名空间之后。

有关详细信息,请参阅文档

最新更新