使用命名空间和自动加载器找不到类

问题描述 投票:1回答:1

当我尝试在服务器上运行我的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

文件布局:

enter image description here

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/"
        }
    }
}

有没有人对可能导致此问题的原因提出任何建议,无论是代码还是服务器设置?

php namespaces composer-php
1个回答
1
投票

虽然在评论中我们已经解决了这个问题,但我决定为此写一个答案。

问题已经有正确的文件路径,命名空间和composer.json配置。唯一缺少的是使用composer dump-autoload生成自动加载脚本。

此命令将生成几个包含与其命名空间配对的文件路径的autoload*.php文件。正如Composer Website所解释的那样。

© www.soinside.com 2019 - 2024. All rights reserved.