PHP 7 类型提示问题

4
<?php
namespace XYZ\Model;

interface user{
public function getName() : string;
}

?>

现在发生的情况是,该字符串被假定为类型 XYZ\Model\string,因此,我制作的任何实现接口的类都不匹配(在不同的命名空间中)。
如果我使用 \string,那么代码将失败,并显示 Scalar type declaration must be unqualified
此外,布尔类型可以有多少种?删除一些提示后,我得到了下面的结果:Return value of xxxxx::save() must be an instance of boolean, boolean returned in xxxxxx.php:41

3
你正在使用PHP7还是HHVM?演示链接 - Mark Baker
请将您的问题从string类型声明更改为boolean。这样对其他用户会更有帮助。 - bodo
2个回答

2

在7.0.3上测试了以下代码,注意我在你的命名空间定义旁边添加了一个缺失的;,它可以正常工作。

namespace XYZ\Model;

interface user {
    public function getName(): string;
}


class Test implements User {
    public function getName(): string {
        return 'SomeName';
    }
}

$t = new Test;
echo $t->getName();

Outputs:

SomeName


请为该类使用不同的命名空间,这样您就会明白我所困扰的问题。 - Saurabh datta
1
请为该类使用不同的命名空间 - 就像这样:https://3v4l.org/GZlLV - VolkerK
顺便说一句,非常感谢。我的原始代码使用布尔值,但标量类型提示不支持它们,因此出现了问题。 - Saurabh datta

-1

更新:PHP 没有问题。它是布尔类型,不支持标量类型提示。


8
好的,我会尽力进行翻译。原文意思是说:“这里应该用bool而不是boolean。那么为什么在你的示例中却使用了string呢?” - VolkerK
你应该在相应的文档部分中引用以下标量类型的别名警告:“警告。以上标量类型的别名……” - bodo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接