php - 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\Controllers
UserDTO。没看到use App\Entity\DTO;
解决方案
PHP 中没有实际的“导入”,一切都只是一个别名。您在此文件中使用别名App\Entity\DTO
,DTO
因此要引用您的 DTO,您需要使用DTO\UserDTO
:
new DTO\UserDTO;
DTO
当您使用该语句时,您并没有导入其中的所有内容use App\Entity\DTO;
;这相当于use App\Entity\DTO as DTO;
你也可以直接给这个类起别名:
use App\Entity\DTO\UserDTO;
...
... new UserDTO;
推荐阅读
- replace - 子字符串的基本 LISP 递归替换
- elasticsearch - 如何将搜索查询参数传递给弹性搜索 url
- mongodb - Elixir 和 mongodb 聚合
- vb.net - VB.NET - 在流关闭之前不发送数据
- r - mutate_all 在 r 中的列表上使用 map 和 case_when / ifelse
- android - 无法进行其他活动
- python - 欧几里得 GCD 函数返回类型 None 而不是 int
- c++ - Steam 和 Blizzard Launcher 之类的东西如何在不使用默认操作系统窗口的情况下创建 GUI?
- python - 'list' 对象不可调用,试图访问列表中的项目并将其分配给对象
- kotlin - Spring DataJpaTest 中的 Kotlin 协程