【问题标题】:Class 'App\Http\Database\Model' not found找不到类“App\Http\Database\Model”
【发布时间】:2017-12-06 02:48:09
【问题描述】:

我正在使用 composer 来自动加载类,但由于某种原因,在我的 Controller 中找不到类 Model

Controller.php

namespace App\Http\Controllers;

use App\Http\Database\Model;

class Controller extends Model
{

    public function insert($query){

        $results = $this->model->query($query)->fetchAll();

        return $results;
    }
}

现在我在Model 文件中拥有一个与 MySQL 的简单 PDO 连接

模型.php

namespace app\Http\Database;

class Model extends Database
{
    public $model;

    function __construct()
    {
        try {
            $this->model = new \PDO("mysql:host=".Database::DB_HOST."; dbname=".Database::DB_DATABASE."", "".Database::DB_USER."", "".Database::DB_PASS."", array(\PDO::ATTR_PERSISTENT => false));
            $this->model->exec("SET CHARACTER SET utf8");
            return $this->model;

        } catch (PDOException $e) {
            echo "Cannot connect to the Database";
            die();
        }
    }
}

这是我的 index.php 上的内容

index.php

namespace App\Http\Controllers;

error_reporting(E_ALL);
ini_set("display_errors", 1);

require_once __DIR__ . '/../vendor/autoload.php';

$controller = new Controller();

$query = 'SELECT * FROM pages WHERE id = 1';

print_r($controller->insert($query));

autoload.php

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php',
    'App\\Http\\Controllers\\IndexController' => $baseDir . '/app/Http/Controllers/IndexController.php',
    'App\\Http\\Database\\Database' => $baseDir . '/app/Http/Database/Database.php',
    'app\\Http\\Database\\Model' => $baseDir . '/app/Http/Database/Model.php',
);

我在这里缺少什么?你能指出我正确的方向吗?

【问题讨论】:

  • 你能展示你的自动加载配置吗?
  • // 添加这一行 use App\Model;
  • 如问,你能显示自动加载配置吗?另外,请注意您已经设置了 Model.php namespace app\Http\Database 的名称空间,我假设您的意思是 App\Http\Database
  • @localheinz,刚刚更新了我的问题,添加了 autoload.php
  • @AlexB 我的意思是composer.json中的配置。

标签: php class autoload


【解决方案1】:

您能否检查一下您的模型类中的命名空间。请重命名为App\Http\Database

【讨论】:

  • 刚刚改了,但目前结果相同
  • 实际上重新运行后它现在已经修复了,所以非常感谢,我猜,字母大小写是这里的问题
  • Composer 是一个很棒的工具,你只需要确保你遵循 PSR 标准,并且一旦你做出改变建议转储自动加载。快乐的编码伙伴!
【解决方案2】:

或者,修复导入:

use app\Http\Database\Model;

但是,您可能希望按照已经建议的方式修复命名空间。

【讨论】:

  • 这里有一个错误:Fatal error: Class 'App\Http\Database\Model' not found in C:\Users\Xampp\htdocs\project123\app\Http\Controllers\Controller.php on line 14
猜你喜欢
  • 2020-02-02
  • 2018-02-25
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2016-05-15
  • 2018-05-02
相关资源
最近更新 更多