Quantcast
Channel: PHP8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 521

読解メモ: PHP RFC: Make constructors and destructors return void

$
0
0

この記事は @carrotRakkoPHP RFC: Make constructors and destructors return voidを読み解いて自分なりにまとめなおしたものです。

英語の解釈や PHP の仕様/実装などなどについて間違っている部分を見つけたらご指摘くださると幸いです。

この記事を書いている時点で読んでいるリビジョンは 2020/07/02 23:13 のものです。

__construct()の返り値の型指定

型指定の仕方を3パターン考えてみます↓

  1. 型指定なし: __construct()
  2. 型指定あり & void: __construct(): void
  3. 型指定あり & void以外: __construct(): bool

PHP 7.4.x では(事実)

型指定の仕方どうなる
型指定なし: __construct()問題なし
型指定あり & void: __construct(): voidFatal error
型指定あり & void以外: __construct(): boolFatal error

PHP 8.0 では(提案)

型指定の仕方どうなる
型指定なし: __construct()問題なし
型指定あり & void: __construct(): void問題なし
型指定あり & void以外: __construct(): boolFatal error

PHP 8.1/9.0 では(提案)

PHP 8.0 では(提案)と同じです。

型指定の仕方どうなる
型指定なし: __construct()問題なし
型指定あり & void: __construct(): void問題なし
型指定あり & void以外: __construct(): boolFatal error

__construct()に返り値の型指定をしなかった場合

暗黙的に返り値の型指定とみなされるパターンを2つ考えてみます↓

  1. なにも指定していないとみなされる(そのまま): 文法違反ですが強いて言うなら __construct(): void|mixed
  2. voidを指定したとみなされる: __construct(): voidとみなされる

PHP 7.4.x では(事実)

なにも指定していないとみなされる(そのまま): 文法違反ですが強いて言うなら __construct(): void|mixed

PHP 8.0 では(提案)

なにも指定していないとみなされる(そのまま): 文法違反ですが強いて言うなら __construct(): void|mixed

PHP 8.1/9.0 では(提案)

voidを指定したとみなされる: __construct(): voidとみなされる

__construct()から値を返した場合

PHP の怒り方を3パターン考えてみます↓

  1. 怒られない
  2. Deprecated
  3. Fatal error

PHP 7.4.x では(事実)

怒られない

PHP 8.0 では(提案)

Deprecated

PHP 8.1/9.0 では(提案)

Fatal error


Viewing all articles
Browse latest Browse all 521

Trending Articles