【发布时间】: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中的配置。