0

在此处输入图像描述命名空间系统,甚至在 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: ../");
            }

        }

    ?>
4

3 回答 3

0

要让您的文件自动加载,您需要使用 composer.json 自动加载中的文件,只需添加您的文件路径,然后转储自动加载并应该加载。

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

    ]
}
于 2020-04-08T02:16:12.583 回答
0

如果上述答案不起作用,这应该解决它。将第一个对象的命名空间放在首位。这里的意思是,crud之前的oauth

    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'] . "\"");
?>
于 2020-04-11T01:17:38.493 回答
0

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

于 2020-04-08T02:24:20.947 回答