猿问

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

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


问题是我无法从这些类中实例化新对象,当我做的一切都停止并且我无法继续执行我的文件时。


用户.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 之前,我可以 vardump 任何东西,但在我分配之后什么都不起作用。


用户方法类:


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;

            ";


可能是什么问题?


郎朗坤
浏览 196回答 2
2回答

凤凰求蛊

您似乎错过了文件的导入。使用命名空间时,为了使导入几乎自动,最好实现自动加载器,我建议检查如何使用 composer 启用自动加载如果您的类很少,您可以避免使用自动加载器而只是手动导入每个类,在这种情况下,您应该:require UserMethods.php在 User.php 文件的开头。

精慕HU

包括自动加载功能或添加 require('pathToClass/ClassName.php') 尝试正确的路径命名空间大小字母。
随时随地看视频慕课网APP
我要回答