PHP Docblock用于Trait理解父类



是否有一个有效的Docblock标记可以让特征知道它将与哪个类/接口一起使用?例如(以下纯属虚构代码(。

interface Authenticatable {
public function getId();
}
class User implements Authenticatable {
use HasAvatar;
}
class Admin implements Authenticatable {
use HasAvatar;
}
trait HasAvatar {
public function getAvatarUrl() {
return AvatarService::getAvatarUrlForId(
$this->getId()
);
}
}

您可以看到HasAvatar特性从父类访问getId()

然而,当您在IDE中时,它找不到getId(),因为它不属于特性,并且没有注释提示来说明在哪里可以找到这个方法。

因此,有没有一种方法可以告诉这个特性,它将以特定的方式实现?例如

/**
* @used-by AppInterfacesAuthenticatable
*/

这将使IDE知道它可以访问Authenticatable所拥有的一切?

感谢

您可以通过在特性中声明该方法为抽象方法来强制该方法的存在。不需要文档块注释,IDE将识别该方法,并在某个地方丢失时警告您:

trait HasAvatar {
public function getAvatarUrl() {
return AvatarService::getAvatarUrlForId(
$this->getId()
);
}

public abstract function getId();
}

相关内容

  • 没有找到相关文章

最新更新