php - php从不同的接口实现相同的功能
问题描述
有许多 php 组件,每个组件都需要实现自己的接口或类似 psr 的东西。
如果我必须从不同的组件实现两个不同的接口,并且这些接口具有相同的功能,换句话说,相同的签名或功能名称,
我可以在一个类中实现这些接口吗?
像这种情况。
interface I1FromComponent1 {
function getName:string
}
interface I2FromComponent2 {
function getName:Name(or NameInterface)
}
Myclass {
function getName():string {
return $this->name;
}
}
解决方案
PHP 不支持方法重载,为了解决这个问题,PHP 手册说明了它是 OOP 的实现...
一个类可以实现两个定义同名方法的接口,前提是两个接口中的方法声明相同
接口的目的是确保在整个代码中一致地使用函数,并与支持这些特性的 IDE 中的类型提示和代码嗅探相关联。如果没有重载,代码如何处理这样的事情?
// Works for string return type, but will only return a string for
// NameInteface return type if it implements the __toString() method
echo $this->getName();
// Works for NameInterface return type, but fails for string return type
$var2 = $this->getName()->nameMethod;
您最好的选择是让接口定义不同的方法,一种用于每种返回类型:
interface I1FromComponent1 {
function getName() : string;
}
interface I2FromComponent2 {
function getNameObject() : NameInterface;
}
推荐阅读
- android - 需要采取的行动 在 2020 年 3 月 1 日之前切换到 Play Referrer API
- python - 提高使用 Python 将 CSV 加载到 Oracle 的性能
- python - 在 Pandas 数据框中从左到上移动单元格
- html - 在 dompdf html 表中插入图像
- swift - 使用自动布局将对象均匀分开
- haskell - haskell 中非记录数据构造函数的术语
- powershell - Powershell脚本将输出重定向到文本文件
- python - 如何在 eventthub 中获得消费者滞后
- c - 无法将参数 '1' 的 'LPCWSTR {aka const wchar_t*}' 转换为 'const char*' 到 'int printf(const char*, ...)'
- serverless-framework - 部署时如何在无服务器中使用 --config 或 -c 选项?