接口内的方法返回类型

时间:2017-08-17 13:36:58

标签: php interface php-5.6

可能我正在做一些可怕的错误,但仍然无法找到方法。任何人都可以有解决方案吗?

我有一个界面 -

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); 

以上两种情况都是不可能的。

2 个答案:

答案 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,因此混淆

PHP7-strict-return-types

在PHP 5中,您必须创建某种观察者类,通过注释和反射来检查返回类型。但这可能会对代码/应用程序产生非常沉重的负担。 PHP5中更好的方法是进行单元测试,以确保代码仍以正确的方式使用。

如果您试图强迫其他人使用您的代码,只需添加免责声明;)

答案 1 :(得分:0)

在接口中声明返回类型的方式与在类中声明它的方式相同。

boolean function valid( $data );

不起作用,因为返回类型声明位于错误的位置。该代码甚至不会解析。正确的语法是:

function valid( $data ): boolean;

See the PHP documentation for more information and examples.