首页 > 解决方案 > PHP Laravel 创建和实例化类

问题描述

在 PHP Laravel 中,我想创建具有属性的类,比如 DTO。在 App\Entity 我创建了类:

<?php

namespace App\Entity\DTO;

class UserDTO
{
    public $id;
}

我想在我的Controller

<?php

namespace App\Http\Controllers;

use App\Entity\DTO;

class UserApiController extends Controller
{
    public function loginPost(Request $request)
    {
      ...
      $userDTO = new UserDTO();
      $userDTO->id = $user->id;
    }
}

我有错误:

Error: Class 'App\Http\Controllers\UserDTO' not found in file C:\xampp\htdocs\testsapp\app\Http\Controllers\UserApiController.php on line 131
#0 [internal function]: App\Http\Controllers\UserApiController->loginPost(Object(Illuminate\Http\Request))
#1 C:\xampp\htdocs\testsapp\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(54): call_user_func_array(Array, Array)

它正在命名空间中寻找App\Http\ControllersUserDTO。没看到use App\Entity\DTO;

标签: phplaravelclass

解决方案


PHP 中没有实际的“导入”,一切都只是一个别名。您在此文件中使用别名App\Entity\DTODTO因此要引用您的 DTO,您需要使用DTO\UserDTO

new DTO\UserDTO;

DTO当您使用该语句时,您并没有导入其中的所有内容use App\Entity\DTO;;这相当于use App\Entity\DTO as DTO;

你也可以直接给这个类起别名:

use App\Entity\DTO\UserDTO;

...

... new UserDTO;

推荐阅读