命名空间无法正确解析

时间:2020-04-08 02:08:26

标签: php namespaces php-7.4

enter image description here命名空间系统,甚至在composer.json中的Classmap的重新起草之后以及转储自动加载之后,都没有给我命名空间中的对象。这似乎也在逐步升级。尽管我有一个文件可以做到这一点,但随着有限的进展,这成为一个更大的问题。我不知道该怎么办。这是无法运行的代码文件之一。

这是login.php:

<?php
namespace Adoms\crud;

require_once("../vendor/autoload.php");

if (!isset($_SESSION)) {
    session_start();
    $_SESSION['login'] = false;
}
?>
    <?php

        if (!isset($_GET['g'])) {
            require('view/login/username.php');
        }
        else if (isset($_GET['g']) && $_GET['g'] == 1) {
            require('view/login/pass.php');
        }
        else {
            $login = new db("../Adoms/config/config.json");   // Says no "Adoms\crud\db" in error msg

            $record = $login->read(["users" => ["site_id", "username"]], "username = '" . $_COOKIE['username'] . "' AND password = '" . $_COOKIE['password'] . "'");

            if ($record->num_rows == 1) {
                header("Location: ../");
            }

        }

    ?>

3 个答案:

答案 0 :(得分:0)

要自动加载文件,您需要在composer.json autoload中使用文件,只需添加文件路径,然后dump-autoload并加载即可。

"autoload": {
    "files": [
        "path/to/yourfile.php",

    ]
}

答案 1 :(得分:0)

我发现,在处理此类问题时,您可能希望更新composer.lock。这是通过在控制台上使用composer update来实现的。这应该可以解决任何人的问题。

答案 2 :(得分:0)

如果以上答案无效,则应将其修复。将第一个对象的名称空间放在第一位。这意味着crudoauth之前

    namespace Adoms\crud;

    use Adoms\src\oauth2;
    include_once("../../../vendor/autoload.php");

    if (!isset($_SESSION))
        session_start();

    $db = new db("../../../Adoms/config/config.json");

    $result = $db->read(["users" => ["username", "site_id"]], "`site_id` = '" . $_COOKIE['PHPSESSID'] . "' OR `username` = \"" . $_POST['username'] . "\"");
?>