Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中对特定对象数组进行类型暗示?_Php - Fatal编程技术网

如何在php中对特定对象数组进行类型暗示?

如何在php中对特定对象数组进行类型暗示?,php,Php,我想 return array(new Foo(), new Bar()); 有没有一种方法可以进行类型暗示呢?没有,因此在PHP中是不可能的。PHP5类型暗示仅用于函数和方法参数,而不用于返回类型 但是,PHP7添加了返回类型声明,但与参数类型声明类似,它们只能是以下之一: 类或接口 self 数组(没有关于其内容的任何细节) 可调用的 布尔 浮动 int 串 如果您使用的是PHP7,您可以只指定一个数组,或者创建一个类来保存这两个对象,并将其用作返回类型 这在phpForm中工作(当

我想

return array(new Foo(), new Bar());

有没有一种方法可以进行类型暗示呢?

没有,因此在PHP中是不可能的。PHP5类型暗示仅用于函数和方法参数,而不用于返回类型

但是,PHP7添加了返回类型声明,但与参数类型声明类似,它们只能是以下之一:

  • 类或接口
  • self
  • 数组(没有关于其内容的任何细节)
  • 可调用的
  • 布尔
  • 浮动
  • int
如果您使用的是PHP7,您可以只指定一个数组,或者创建一个类来保存这两个对象,并将其用作返回类型

这在phpForm中工作(当然不指定元素的顺序):

简而言之,答案是否定的

稍微长一点的答案是,您可以创建自己的来用作提示,但这意味着您将需要返回一个对象而不是数组

class Foo {};
class Bar {};

class Baz {
    private $foo;
    private $bar;

    public function __construct(Bar $bar, Foo $foo) {
        $this->bar = $bar;
        $this->foo = $foo;
    }

    public function getFoo() : Foo {
        return $this->foo;
    }

    public function getBar() : Bar {
        return $this->bar;
    }

}

function myFn() : Baz {
    return new Baz(new Bar(), new Foo());
}

$myObj = myFn();
var_dump($myObj);

注意:这需要PHP 7+来暗示返回类型。

你说的“暗示”是什么意思?目前,没有办法,尽管有一个被拒绝的方法。你有RFC@MarkBaker的url吗?
class Foo {};
class Bar {};

class Baz {
    private $foo;
    private $bar;

    public function __construct(Bar $bar, Foo $foo) {
        $this->bar = $bar;
        $this->foo = $foo;
    }

    public function getFoo() : Foo {
        return $this->foo;
    }

    public function getBar() : Bar {
        return $this->bar;
    }

}

function myFn() : Baz {
    return new Baz(new Bar(), new Foo());
}

$myObj = myFn();
var_dump($myObj);