Php 使用名称空间和“未找到类”时出错;使用「;
我是PHP新手,我正在学习一门在线课程(出于这个原因,我没有使用自动加载或任何其他方式加载类) 我的问题是我的控制器类(我在其中使用“use”)无法看到我的模型类(我在其中声明了名称空间) 错误是: 致命错误:未捕获错误:在第20行的C:\xampp\u php729\htdocs\Freeblog\App\Controllers\postController.php中找不到类“App\Models\Post” 这是我的密码: PostController.phpPhp 使用名称空间和“未找到类”时出错;使用「;,php,class,import,namespaces,Php,Class,Import,Namespaces,我是PHP新手,我正在学习一门在线课程(出于这个原因,我没有使用自动加载或任何其他方式加载类) 我的问题是我的控制器类(我在其中使用“use”)无法看到我的模型类(我在其中声明了名称空间) 错误是: 致命错误:未捕获错误:在第20行的C:\xampp\u php729\htdocs\Freeblog\App\Controllers\postController.php中找不到类“App\Models\Post” 这是我的密码: PostController.php namespace App\
namespace App\Controllers;
use App\Models\Post;
class PostController {
protected $layout = __DIR__ . '/../../Layout/index.template.php';
protected $conn;
public $content;
public $posts;
protected $myPost;
public function __construct(\PDO $conn) {
$this->conn = $conn;
try {
$this->myPost = new Post($conn);
} catch (Exception $e) {
die($e->getMessage());
}
$this->content = $this->process();
}
....
}
Post.php:
namespace App\Models;
use \PDO;
class Post {
protected $conn;
public function __construct(PDO $conn){
$this->conn = $conn;
}
...
}
这是项目结构:
由于您没有使用自动加载,所以不会加载除控制器以外的目录中的文件 所以,如果您不想使用自动加载,您应该使用include语句或require语句手动包含文件(位于其他目录中的文件)。(在PostController.php文件中包含Post.php文件)
正如您在评论中提到的,必须加载正在工作的其他文件,因为它们存在于同一目录中(相同的软件包在这里并不重要,但相同的目录对加载其他文件很重要)。那么您希望如何包含(加载)文件如果你不使用任何自动加载?我不知道我参加了一个课程来学习:)在其他两个php文件中,我做了同样的事情,它工作了。。唯一的区别是它们在同一个包中(但我尝试在同一个包中移动Post和PostController,但不起作用),非常感谢!我在index.php中缺少了“require”部分。不幸的是,我关注的是这两个文件,而不是其他文件:(