
PHP8 上級/準上級試験の認定模擬問題として、プライム・ストラテジー様のPRIME STUDYが認定されているようです。ただ、この模擬問題には解説がありませんので解説をまとめていこうと思います。シリーズ第14回目です。

PHP初級レベルから脱却して中級/上級レベルにいきたい人にピッタリの内容ですね。

今回はPHP7.3.xからPHP7.4.xへの移行に関する問題です。PHP7.4では多くの便利な機能が追加されました。それぞれしっかり押さえておきましょう。
PRIME STUDY認定模擬問題のリンクはこちらです → https://study.prime-strategy.co.jp/
問題文
PHP 7.3.x から PHP 7.4.x への移行に関する説明の中で、誤っているものを1つ選びなさい。
明記していない限り、実行は PHP 7.4 で行っている。
なお、すべてのコードの先頭には下記のコードが書かれているものとする。
declare(strict_types=1);
error_reporting(-1);
(1)
クラスのプロパティは、新たに型宣言をサポートするようになった。そのため、以下のコード
class Hoge {
public int $i;
}
$obj = new Hoge();
$obj->i = 'string';
を実行すると、結果は次のとおりとなる。
Fatal error: Uncaught TypeError: Typed property Hoge::$i must be int, string used in …
(2)
アロー関数は、暗黙的な値スコープを持った関数を定義する簡便な文法を提供する。
また、アロー関数は親のスコープで使える変数が常に自動で使える。そのため、以下のコード
$x = 11;
$fn = fn($i) => $i * $x;
var_dump($fn);
var_dump( $fn(9) );
は正しく実行でき、結果は次のとおりとなる。
object(Closure)#1 (1) {
["parameter"]=>
array(1) {
["$i"]=>
string(10) ""
}
}
int(90)
(3)
Null の場合の代入演算子が追加された。そのため、以下のコード
$array = ['key' => 1];
$array['key'] ??= 'default';
$array['key2'] ??= 'default';
var_dump($array);
は正しく実行でき、結果は次のとおりとなる。
array(2) {
["key"]=>
int(1)
["key2"]=>
string(7) "default"
}
(4)
波括弧を使って配列や文字列のオフセットにアクセスする文法は推奨されなくなった。そのため、以下のコード
$s = 'abc';
var_dump( $s{1} );
を実行すると、結果は次のとおりとなる。
Parse error: syntax error, unexpected '}', expecting ']' in …
解説
選択肢1の解説
正しいです。
PHP 7.4 では、クラスプロパティに型宣言が追加され、型エラーが発生します。$i に string を代入しようとすると、型エラーが発生します。
選択肢2の解説
正しいです。
アロー関数は、外部スコープの変数を自動的に参照します。$x はアロー関数内で使用でき、その値に基づいて計算が行われます。
選択肢3の解説
正しいです。
Null 合体代入演算子(??=)が PHP 7.4 で導入され、変数が null の場合に値が代入されるようになります。ここでは ‘key2′ が null であるため、’default’ が代入されます。
選択肢4の解説
誤りです。PHP 7.4 では {} による配列や文字列のオフセットアクセスは非推奨ですが、まだ動作します。
正解選択肢
以上より選択肢4が正解となります。
他の問題へ
模擬問題(1)インストール
模擬問題(2)変数の型
模擬問題(3)クラス
模擬問題(4)メソッドその1
模擬問題(5)メソッドその2
模擬問題(6)リファレンス
模擬問題(7)名前空間
模擬問題(8)エラー
模擬問題(9)定義済みのインターフェイスとクラスおよび SPL インターフェイス
模擬問題(10)SPL
模擬問題(11)定義済の変数
模擬問題(12)PHP7.0.xからPHP7.1.xへの移行
模擬問題(13)可変変数
模擬問題(14)PHP7.3.xからPHP7.4.xへの移行
模擬問題(15)PHP7.4.xからPHP8.0.xへの移行
模擬問題(16)制御構造
模擬問題(17)XSS(クロスサイトスクリプティング)
模擬問題(18)ファイルアップロード
模擬問題(19)推測困難なトークン
模擬問題(20)セッション
模擬問題(21)PHP のメモリ消費
模擬問題(22)関数その1
模擬問題(23)関数その2
模擬問題(24)関数その3
模擬問題(25)関数その4
模擬問題(26)関数その5
模擬問題(27)関数その6
模擬問題(28)関数その7
模擬問題(29)関数その8
模擬問題(30)関数その9
コメント