我定义了一个DTO类,然后定义了一个从第一个类扩展的类。
namespace App\DTO;
class DTO {};
namespace App\Modules\Auth\User\DTO;
class DTO extends App\DTO\DTO {
...Some definitions here
}
接下来,我创建了一个通用的存储库接口;
namespace App\Interfaces;
interface iRepository {
public function create(App\DTO\DTO $data);
}
最后,是我的用户模型的类存储库;
namespace App\Modules\Auth\Repository;
class UserRepository implements App\Interfaces\iRepository {
public function create(App\Modules\Auth\DTO\SignUpDTO $data) {
...some code here
}
}
我在函数创建中遇到有关不兼容类型的错误。
Symfony\Component\Debug\Exception\FatalErrorException: Declaration of App\Modules\Auth\Repository\UserRepository::create(App\Modules\Auth\DTO\SignUpDTO $data) must be compatible with App\Interfaces\RepositoryInterface::create(App\DTO\DTO $object)
我认为多态性意味着我可以同时使用App \ DTO \ DTO和App \ Modules \ Auth \ DTO \ SignUpDTO,因为第二个继承了第一个。
答案 0 :(得分:-1)
最后,我必须通过更改“ create”方法的签名并将DTO类设置为参数来解决此问题。像这样:
namespace App\Modules\Auth\Repository;
class UserRepository implements App\Interfaces\iRepository {
public function create(App\DTO\DTO $data) {
...some code here
}
}
这样,我可以使用SignUpDTO作为参数来调用create方法。