<?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
Проверено следующее Код на 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();
Выходы:
SomeName
ОБНОВЛЕНИЕ: все в порядке с PHP. это логическое значение, которое не поддерживает хинтинг скалярного типа.