无法在常规 php 文件中导入 PHP class

can't import PHP class in a regular php file

我正在尝试用原生 php 构建一个儿子 api。 我使用 类 创建了一个结构,现在我正尝试在常规 php 文件中使用这些 类,该文件将使用 http 客户端从外部调用。

问题是我无法从那些 类 中实例化新对象,当我执行所有操作时,我无法继续执行我的文件。

user.php :

use Actions\Users\UserMethods;

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
   try{
       $Methods = new UserMethods();

       if($_GET["id"]!==null){
           $user = $Methods->getUser($_GET["id"]);
           var_dump($user);
           echo json_encode(['user'=>$user]);
       }
   }catch (Exception $exception){
       returnError($exception->getMessage());
   }
}

我可以在分配 $Methods 之类的地方之前转储任何内容,但是在我分配之后没有任何效果。

用户方法Class:

namespace Actions\Users;

use Models\UserModel;
use database\dbconnect;
use Constants\DbConfig;

class UserMethods
{

    private $DataBase;

    private $userValidator;

    /**
     * UserMethods constructor.
     */
    public function __construct()
    {

        try{


            $this->userValidator = new UserValidator();

            $this->DataBase = new dbconnect(DbConfig::$BD_HOST.":".DbConfig::$DB_PORT,
                DbConfig::$DB_USERNAME,DbConfig::$DB_PASSWORD,DbConfig::$DB_DBNAME);
        }catch(\Exception $exception){

            var_dump($exception);
        }
    }

    public function createUser(UserModel $userModel){
        try{
            $this->userValidator->validate($userModel);
            $name=$userModel->getName();
            $email= $userModel->getEmail();

            $sqlQuery="Insert into users(email,name) values ($$email,$$name)";
            return $this->handleQuery($sqlQuery);

        }catch(\Exception $exception){
            throw $exception;
        }
    }


    public function updateUser(UserModel $userModel){
        try{
            $this->userValidator->validate($userModel);
            $name=$userModel->getName();
            $email= $userModel->getEmail();
            $id=$userModel->getId();
            $sqlQuery="
                UPDATE users
                SET 
                    name = $$name,
                    email = $$email,
                    ...
                WHERE
                    id=$$id;
            ";
            return $this->handleQuery($sqlQuery);

        }catch(\Exception $exception){
            throw $exception;
        }
    }


    public function deleteUser($id){
        try{
            $sqlQuery="
            DELETE FROM users
            WHERE
                id=$$id;
            ";
            return $this->handleQuery($sqlQuery);

        }catch(\Exception $exception){
            throw $exception;
        }
    }

    public function getUser($id){
        try{

            $sqlQuery="
            SELECT id,name,email
            FROM users
            WHERE id=$$id
            ORDER BY id ASC
            ";
            return $this->handleQuery($sqlQuery);

        }catch(\Exception $exception){
            throw $exception;
        }
    }


    public function getAllUsers(){
        $sqlQuery="
            SELECT id,name,email
            FROM users
            ORDER BY id ASC
            ";
        return $this->handleQuery($sqlQuery);
    }


    private function handleQuery($query){
        $MysqlDb = $this->DataBase->connect();
        return $MysqlDb->query($query);
    }

}

可能是什么问题?

您似乎错过了文件的导入。 当使用命名空间时,为了使导入几乎是自动的,最好实现一个自动加载器,我建议检查如何 enable autoloading using composer

如果您的 class 文件很少,您可以避免使用自动加载器,而是手动导入每个 class,在这种情况下,您应该:

require UserMethods.php

在您的 User.php 文件的开头。

包括自动加载功能或添加 require('pathToClass/ClassName.php') 尝试正确的路径名称空间大小字母。