使用命名空间和自动加载器找不到类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用命名空间和自动加载器找不到类相关的知识,希望对你有一定的参考价值。
当我尝试在服务器上运行我的php代码但在查看代码时没有突出显示时,我得到了一个非常奇怪的错误。它是我第一次使用Composers和命名空间等构建的新项目的一部分。错误是:
[18-Apr-2017 20:06:32 UTC] PHP Fatal error: Uncaught Error: Class 'ThomasSmythLoginSystem' 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 NilPortuguesSqlQueryBuilderBuilderGenericBuilder();
$this->config = require('core.config.php');
}
//...
}
fncRegister.php
require_once "../../vendor/autoload.php";
$LoginManager = new ThomasSmythLoginSystem();
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/"
}
}
}
有没有人对可能导致此问题的原因提出任何建议,无论是代码还是服务器设置?
答案
虽然在评论中我们已经解决了这个问题,但我决定为此写一个答案。
问题已经有正确的文件路径,命名空间和composer.json配置。唯一缺少的是使用composer dump-autoload
生成自动加载脚本。
此命令将生成几个包含与其命名空间配对的文件路径的autoload*.php
文件。正如Composer Website所解释的那样。
以上是关于使用命名空间和自动加载器找不到类的主要内容,如果未能解决你的问题,请参考以下文章