【问题标题】:Specifying return type from function从函数指定返回类型
【发布时间】:2015-03-23 11:27:02
【问题描述】:

是否可以从函数中返回特定的类型类?

class barCl {
    function _construct() {
    }
}

function fooBar() {
    return (barCl) new barCl;
         //^^^^^^^
}

【问题讨论】:

  • return new barCl; 有什么问题?

标签: php function return php-7


【解决方案1】:

你已经这样做了,你可以像这样投射它:

(在 php 中显式设置变量的类型是不可能的!您也不能将变量转换为 Object 类型!最近的转换是 (object),您可以这样做)

return (object) $xyObj;

您可以阅读有关 PHP 类型杂耍的更多信息:http://php.net/manual/en/language.types.type-juggling.php

还有一段话:

变量的类型由使用变量的上下文决定

仅供参考:

您在构造函数中遗漏了一个下划线:

function _construct() {
      //^ Here you need 2x _ as all magic methods do

}

Magic Methods

【讨论】:

  • 仍然没有办法将变量转换为特殊对象的类型,而不仅仅是(object)
【解决方案2】:

返回类型刚刚被 PHP 7 接受。返回类型是函数声明的一部分,而不是它的定义。除非您正在创建一个抽象函数或接口,否则不会有太大区别。

将您的代码与in that RFC 结合起来,您会这样做:

class barCl {
    function _construct() {
    }
}

function fooBar(): barC1 {
    return new barCl;
}

在 7 之前的 php 版本中,不能严格声明可调用的返回类型。

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 2015-08-13
    相关资源
    最近更新 更多