Php 类未找到,即使该类是在自动加载中定义的,但类“u exists”(“Main”)返回未找到
我试图显示一条来自类Main的消息,但由于某种原因,无法找到该类,即使它是在我的Php 类未找到,即使该类是在自动加载中定义的,但类“u exists”(“Main”)返回未找到,php,class,Php,Class,我试图显示一条来自类Main的消息,但由于某种原因,无法找到该类,即使它是在我的index.php的开头自动加载的 autoload.php 类Main.php位于目录app/Http/Controllers Main.php 这个类的实例是由我的Route.php创建的,但是现在我正试图将它直接加载到我的index.php index.php 这是你的电话号码 Route.php 任何提示都会有所帮助,请从中发表评论如果您使用别名导入带名称空间的类,请注意class_exists不会使用短的带
index.php的开头自动加载的
autoload.php
类Main.php
位于目录app/Http/Controllers
Main.php
这个类的实例是由我的Route.php
创建的,但是现在我正试图将它直接加载到我的index.php
index.php
这是你的电话号码
Route.php
任何提示都会有所帮助,请从中发表评论如果您使用别名导入带名称空间的类,请注意class_exists不会使用短的带别名的类名-显然,只要将类名用作字符串,就只能使用完整的名称空间版本
您建议如何执行此操作?如果(class_exists(uu NAMESPACE_u.'\'.\\'.“Main”){
在我的索引页中工作得很好,但是当我将其应用于Route.php时,id从那里就不起作用了,因为您位于不同的名称空间中,所以u NAMESPACE_u
是一个不同的值。
return array(
'App\\Http\\Controllers\\IndexController' => $baseDir . '/app/Http/Controllers/IndexController.php',
'App\\Http\\Controllers\\Main' => $baseDir . '/app/Http/Controllers/Main.php',
'App\\Http\\Core\\Controller' => $baseDir . '/app/Http/Core/Controller.php',
'App\\Http\\Core\\Error' => $baseDir . '/app/Http/Core/Error.php',
'App\\Http\\Core\\Load' => $baseDir . '/app/Http/Core/Load.php',
'App\\Http\\Core\\Route' => $baseDir . '/app/Http/Core/Route.php',
'App\\Http\\Core\\Url' => $baseDir . '/app/Http/Core/Url.php',
'App\\Http\\Database\\Database' => $baseDir . '/app/Http/Database/Database.php',
'App\\Http\\Database\\Model' => $baseDir . '/app/Http/Database/Model.php',
);
namespace App\Http\Controllers;
class Main
{
function index(){
echo "Main Index";
}
}
namespace App\Http\Controllers;
use App\Http\Core\Route;
error_reporting(E_ALL);
ini_set("display_errors", 1);
require_once __DIR__ . '/../vendor/autoload.php';
if(class_exists("Main")){
echo "The class is found!";
} else {
echo "This class is not found";
}
new Route();
namespace App\Http\Core;
class Route
{
private $routes;
function __construct()
{
$this->routes = array();
$route = $this->findRoute();
if(class_exists(__NAMESPACE__ . '\\' . $route["controller"])){
$conroller = new $route["controller"]();
if(method_exists($conroller, $route["method"])){
$conroller->$route["method"]();
}else{
Error::show(404);
}
}else{
Error::show(404);
}
}
private function routePart($route){
if(is_array($route)){
$route = $route["url"];
}
$parts = explode("/", $route);
return $parts;
}
static function uri($part){
$parts = explode("/", $_SERVER["REQUEST_URI"]);
if($parts[1] == 'index.php'){
$part++;
}
return (isset($parts[$part])) ? $parts[$part] : "";
}
private function findRoute(){
foreach ($this->routes as $route){
$parts = $this->routePart($route);
$allMatch = true;
foreach ($parts as $key => $value){
if($value != "*"){
if(Route::uri($key) != $value){
$allMatch = false;
}
}
}
if($allMatch){
return $route;
}
}
$uri_1 = Route::uri(1);
$uri_2 = Route::uri(2);
if($uri_1 == ""){
$uri_1 = "Main";
}
if($uri_2 == ""){
$uri_2 = "index";
}
$route = array(
"controller" => $uri_1,
"method" => $uri_2
);
return $route;
}
}