2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPの共変戻り値と反変パラメーターのRFC

Posted at

PHPには共変戻り値(返り値)と反変パラメーター(引数)の機能がある。

<?php

function test(object $obj) : object
{
    return new SplQueue();
}

test(new StdClass());

とは言っても、インターフェースを使ってサブクラスで戻り値を具象化するようなことはできなかった。

interface Factory {
    function make(): object;
}

class UserFactory implements Factory {
    function make(): User;
}

こういうことを出来るようにするRFC。

新機能に反変とか共変とか書いていたからてっきり出来るものだと思っていたらエラーになった。
Status は Accepted になっているけれど実装はいつだろう。
時々しか使わないけれど、この影響で継承やインターフェースを使うクラスだけ型を書かないというような状況になってしまうんだよね。
インターフェースを使うには型を緩くしないといけないとか本末転倒な感じがある。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?