接口中的类型提示

时间:2018-11-24 11:51:32

标签: php types interface type-hinting

我想做存储库接口。目前,我有两个实体:UserPayment。因此,我想为以下实体创建存储库:UsersRepositoryPaymentsRepository

项目中的每个存储库都具有共同的功能,例如:findOnefindsavedelete。因此,我认为我应该创建一个公共存储库,其他存储库将通过该存储库进行扩展RepositoryInterface

<?php
interface UsersRepository extends RepositoryInterface {}

我的服务将取决于这些接口。那么如何键入提示,UsersRepository::findOne将返回User实体?

1 个答案:

答案 0 :(得分:1)

您可以这样指定函数的返回类型:

<?php
interface UsersRepository extends RepositoryInterface {
    function findOne() : User;
}

由于在PHP中提供了泛型,因此您将无法做到:

<?php
 interface RepositoryInterface<T> {
    function findOne() : T;
    function save(T record);
 }

 interface UsersRepository extends RepositoryInterface<User> {
    function findOne() : User;
 }

因此,您只需要为每个存储库中的每个方法指定返回类型