PHP名称空间不';不能在网络托管中工作
每当我尝试为我的类使用名称空间时,我都会收到一个错误,说找不到该类或某种类型的类,我已经在免费域和付费托管的.com域上进行了尝试。为什么会这样PHP名称空间不';不能在网络托管中工作,php,model-view-controller,Php,Model View Controller,每当我尝试为我的类使用名称空间时,我都会收到一个错误,说找不到该类或某种类型的类,我已经在免费域和付费托管的.com域上进行了尝试。为什么会这样 举个例子,我有一个controllers文件夹和一个pagesController.php函数,名称空间为App\controllers,在我的自动加载寄存器中,如果有一个控制器被实例化,我会加载它,它在我的本地开发中运行良好。当我将这些文件移动到web主机时,它只会抛出一个错误。我发现了使用名称空间的问题。。。我不得不使用______; dir __
举个例子,我有一个controllers文件夹和一个pagesController.php函数,名称空间为App\controllers,在我的自动加载寄存器中,如果有一个控制器被实例化,我会加载它,它在我的本地开发中运行良好。当我将这些文件移动到web主机时,它只会抛出一个错误。我发现了使用名称空间的问题。。。我不得不使用______; dir __;然后使用两个点将其发送回一个文件夹,因为某些原因,即使路径文件相同,使用“ROOT”常量也无法工作 ```
那个错误是。。。?你的代码看起来像。。。?我的用法示例:,我收到一个错误,说找不到数据库类[2017年1月30日19:32:28 UTC]PHP致命错误:在第12行的/home/pauldiamant/public_html/index.PHP中找不到Class'classes\Database'。您是否在部署的代码上运行了composer install
。。。编辑:由于某种原因,spl auto load似乎在web主机上不起作用,但如果我仍然手动包含该文件,则名称空间也不会起作用。那么,您可以展示一下您的自动加载功能吗?服务器上的文件夹结构是什么?安装的PHP版本是什么?(作为你的帖子的编辑,而不是评论?)
<?php
use app\classes\App as App;
require ROOT . '/vendor/autoload.php';
require 'functions.php';
spl_autoload_register(function ($class_name) {
$validNameSpaces = [
'app\controllers\\', 'app\models\\', 'app\classes\\'
];
foreach($validNameSpaces as $namespace) {
if(strpos($class_name, $namespace) === 0) {
$path = __DIR__ . '/../' . strtr($class_name, '\\', '/') . '.php';
if(is_file($path) && is_readable($path)) {
include_once $path;
return true;
}
}
}
return false;
});
App::instance();
include_once "routes.php";