类型提示混淆
Posted
技术标签:
【中文标题】类型提示混淆【英文标题】:Type hinting confusion 【发布时间】:2018-07-17 16:14:05 【问题描述】:我最近了解了 php 中的新类型提示功能。
第一:
public function setSomething(Foo $bar):void
还有:
public function getSomething():Foo
今天我遇到了这个:
public /*int*/ doSomething()
这种新类型的提示是什么?我似乎无法弄清楚这是什么?
【问题讨论】:
只是评论,没什么重要的 可以在变量旁边声明类型,如第一个示例中所示,或在方法上方的注释块中。 仅适用于 PHP 7 【参考方案1】:让我们一步一步来:
public function setSomething(Foo $bar):void
这里的Foo
是提示$bar 必须是Foo
类的实例。
void
告诉函数必须不返回任何内容
public function getSomething():Foo
这里Foo
暗示函数必须返回Foo
类的实例
public /*int*/ doSomething()
在这种情况下,实际上没有使用任何类型提示。 /*int*/
只是一个评论。我猜当 php 中的类型提示不可用时有人离开了。
您可以在文档中阅读更多内容: http://php.net/manual/en/migration70.new-features.php
【讨论】:
【参考方案2】:认为其他答案涵盖了最后一个版本纯粹是评论的主要思想,但有时 cmets 比 cmets 多一点......
/**
* @param string $key
* @return int
*/
public function get ( string $key )
这是一个非常精简的文档块,用于从代码生成文档,但也适用于各种 IDE,以在您引用代码时帮助输入提示。
在此注释中,返回类型指定为 int- 但代码对此没有添加任何限制。
【讨论】:
以上是关于类型提示混淆的主要内容,如果未能解决你的问题,请参考以下文章
修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败
修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败
修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败
修复 SmartAssembly 混淆 .NET 6 时提示 Unable to load runtime config file 失败