【发布时间】:2018-03-18 22:35:29
【问题描述】:
我无法让 class_exists 查看我的类文件。
更烦人的是,如果我真的直接包含类文件,它会抱怨我不能包含它,因为类已经存在!谈论一个耳光。
这显然有很多部分,所以我将尝试包括相关的部分:
我正在检查的类是 Posts.php 在 Router.php 内的一个函数中
目录结构:
app
|
--->Project
|
|--->Controllers
| |
| --->Posts.php
|
|--->Core
| |
| --->Router.php
类名(控制器)是从查询字符串的一部分中提取出来的,它已经过测试并且可以工作。即 - mysite.com/posts/view 将导致类名作为“帖子”传递,就像 psr4 一样。
路由器调度功能的问题所在。
if (class_exists($controller)) {
$controller_object = new $controller();
} else {
echo "Controller class $controller missing";
}
我尝试过直接包含该课程,就像我说的那样,我收到了关于两次包含同一课程的警告。
我也尝试过使用类常量:
if (class_exists($controller::class)) {
但是得到了:
Fatal error: Dynamic class names are not allowed in compile-time
还尝试使用完整的命名空间网址:
if (class_exists('Project\\Controllers\\' . $controller))
但同样,找不到类。
这里是 Posts.php
namespace Project\Controllers;
class Posts
{
public function index()
{
echo 'It Works';
}
}
我在这里遗漏了什么明显的东西吗?
【问题讨论】:
-
尝试 class_exists('\\Project\\Controllers\\'.$controller) 并且不要忘记包含您的课程,例如。使用 Project\Controllers\ClassName;
-
不,同样的.. 未捕获的错误:在....中找不到类“帖子”
标签: php class namespaces