我正试图创建一个目录来存储自定义类,所以我在该文件夹中创建了目录app/ArgumentClub/Transformers
和类UserTransformer.php
。
然后我自动加载:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-4": {
"ArgumentClub\": "app/ArgumentClub"
}
},
并运行composer dump-autoload
。命名空间如下:
<?php namespace ArgumentClubTransformers;
class UserTransformer {
我在另一个类中这样称呼这个类:
<?php
use SorskodLarasponseLarasponse;
use ArgumentClubTransformers;
class UsersController extends BaseController {
...
$transformed = $this->fractal->collection($users, new UserTransformer());
但我得到了错误:
Class 'UserTransformer' not found
我在这里做错了什么?
您没有正确使用use
。
use ArgumentClubTransformers;
导入该Namespace,但不导入要使用的类。
要修复它,您可以将use
语句(您应该这样做)扩展为:
use ArgumentClubTransformersUserTransformer
或者,您可以将Transformers命名空间添加到实例化UserTransformer类的位置
$transformed = $this->fractal->collection($users, new TransformersUserTransformer());
当您想实例化一个有名称空间的类而不放入完整的名称空间时,您需要将完整的类路径放入use
语句中。