当我尝试在服务器上运行我的PHP代码但在查看代码时没有突出显示时,我得到了一个非常奇怪的错误。它是我第一次使用Composers和名称空间等构建的新项目的一部分。错误是:
[18-Apr-2017 20:06:32 UTC] PHP Fatal error: Uncaught Error: Class 'ThomasSmyth\LoginSystem' not found in /home/thomassm/public_html/php/functions/fncregister.php:4
文件布局:
LoginSystem.php
namespace ThomasSmyth;
class LoginSystem {
private $core;
private $builder;
private $config;
function __construct(){
$this->core = new coreFunctions();
$this->builder = new \NilPortugues\Sql\QueryBuilder\Builder\GenericBuilder();
$this->config = require('core.config.php');
}
//...
}
fncRegister.php
require_once "../../vendor/autoload.php";
$LoginManager = new \ThomasSmyth\LoginSystem();
echo $LoginManager->Register($_POST["StrSurname"], $_POST["StrForename"], $_POST["StrEmail"], $_POST["StrPassword"], $_POST["DteDoB"], $_POST["StrGender"], $_POST["StrToken"]);
composer.json
{
"require": {
"nilportugues/sql-query-builder": "^1.5"
},
"autoload": {
"psr-4": {
"ThomasSmyth\\": "php/lib/"
}
}
}
是否有人对可能导致此问题的原因提出任何建议,无论是代码还是服务器设置?
答案 0 :(得分:1)
虽然在评论中我们已经解决了这个问题,但我决定为此写一个答案。
问题已经有正确的文件路径,命名空间和composer.json配置。唯一缺少的是使用composer dump-autoload
生成自动加载脚本。
此命令将生成包含与其命名空间配对的文件路径的多个autoload*.php
文件。如Composer Website中所述。