我有一个界面 -
interface L_Item_Action{
function get_title();
function get_price();
function valid( $data );
function get_error_messages();
}
在这个接口中,我希望函数valid()
仅返回布尔值。
它不是所引用的副本,因为它根本不处理接口。
我试过了boolean function valid( $data );
但是没有用。
有什么办法吗?
试图清除混淆
这件事有效 -
function sum($a, $b): int {
return $a + $b;
}
bcoz这里我定义了这个功能。 但是在将其定义为抽象方法或界面方法时,它就无法发挥作用。
function sum($a, $b): int;
int function sum($a, $b);
以上两种情况都是不可能的。
答案 0 :(得分:2)
由于评论而更新。
如果你使用PHP 7(你说的话)你必须严格使用它declare(strict_types=1);
并使用function valid($data): bool{};
更新2,因为评论
OP发布了她的问题代码extacly like it is on the documentation for strict types,但该文档还说它只是PHP 7,因此混淆
在PHP 5中,您必须创建某种观察者类,通过注释和反射来检查返回类型。但这可能会对代码/应用程序产生非常沉重的负担。 PHP5中更好的方法是进行单元测试,以确保代码仍以正确的方式使用。
如果您试图强迫其他人使用您的代码,只需添加免责声明;)
答案 1 :(得分:0)
在接口中声明返回类型的方式与在类中声明它的方式相同。
boolean function valid( $data );
不起作用,因为返回类型声明位于错误的位置。该代码甚至不会解析。正确的语法是:
function valid( $data ): boolean;
See the PHP documentation for more information and examples.