PHP8準上級試験に合格した話

2024年12月にPHP8認定試験 準上級に合格しました。
勉強方法や受験しての感想などをまとめたので、これからPHP8の上級・準上級試験を受けようと思っている方の参考になれば嬉しいです。

### 投稿主について
PHPの実務経験は当時で2年目。2024年2月に初級試験に合格。「このまま上級余裕でしょ♪」と舐めた精神で勉強と受験をした結果、『ギリギリ準上級合格（60点）』になりました。
ポケモンでジムリーダーに挑むも攻撃がわずかしか通らず、キズぐすりやげんきのかけらでなんとか繋いで繋いでやっと倒した…みたいな辛勝でした。非常に反省した年末でした…

### 勉強期間
最初は2024年の夏頃に受けようかと思っていたのですが、悪い癖が出て、伸ばしに伸ばして冬になりました…春から秋にかけて模擬試験をたまに受け、だらだらし、たまに勉強して…というダメの見本みたいな過ごし方をしました。
トータルで見れば半年、集中して勉強したのは2か月ほどでした。

### やったこと
1.[出題範囲と対策](https://www.phpexam.jp/summary/expert8)を調べる
2.[模擬試験](https://study.prime-strategy.co.jp/study/ph8ex1/)を繰り返し解く
3.分からなかった問題は[PHP独習](https://www.shoeisha.co.jp/book/detail/9784798168494)や公式リファレンスで確認する
4.[古庄親方の上級コラム](https://www.phpexam.jp/archives/category/column/oyakata)を読む 
5.コラムや模擬試験で出てきたコードを実際に書いてみる
2~5を繰り返す。

模擬試験は初回は33点、最終的に90点くらいとれるところまでやりました。
分からない関数や言葉、問題はPHP独習の解説を読んだり、公式リファレンスを確認したり、実際にコードを書いて答えを導き出していました。古庄親方の上級コラムでは模擬問題にないコードも触れているので、こちらも書いて動作を確認していました。

### 大変だったこと
#### ・解説がない
模擬試験には解説がないので、そもそも何が間違っているのか分からないといった問題が一番困りました。[ヒロの人生放浪記](https://hiro-hobbyblog.com/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%88%9D%E5%BF%83%E8%80%85%E3%81%AEphp%E4%BF%AE%E7%BE%85%E3%81%AE%E9%81%93%EF%BC%834%E3%80%9Cphp8%E4%B8%8A%E7%B4%9A%E5%95%8F%E9%A1%8C/)さんが解説を出されていたので、そちらを頼ってなんとか進めていました。あとはコードを実行環境で動かすとエラーが出るので消去法で答えを導いたりしていました。早く回答編も作られてほしいですね。

#### ・出題範囲が広い
PHP上級試験では出題範囲が非常に広いです。関数だけでもとんでもない数ありますので、
それをすべて書いて実行して、セキュリティに関する対策を覚えて…というのは骨が折れました。出題範囲などは違いますが、初級を受けてからの方が勉強はスムーズに進みやすいと思います。



### 模擬試験と違った点
・1問に対しての選択肢が4つではなく、3つだった
・各問題の中に公式リファレンスから引用した文章が入っていた（模擬試験だと設問の一番上に書いてある）
・想像以上に関数の問題が出た

既に模擬試験解いている方は分かると思いますが、模擬試験は1問に対して4つ選択肢があります。本番では3つにだったので少し拍子抜けしたのを覚えています。（本番も4つだったら選択肢が多すぎて外していた可能性もあったかも…）

### やってよかったこと
・「コードを書いて実行する」を繰り返す
・関連する関数を思い出す

PHP 技術者認定機構の対策でも言われていますが、ちょっとでもコードを書いておくのが大事です。あとは、「●●な処理をやりたい。この時には▲▲メソッドが使えて…」といったように、思い出す行為も重要だなと思いました。
こういった思い出す行為を「アクティブリコール」というそうです。
こちらは試験後に読んだ記事ですが、新しく知識を入れたい際に大変参考になります。

https://qiita.com/Sicut_study/items/aad3c38ab0fd1df894b2#3-1-%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%AA%E3%82%B3%E3%83%BC%E3%83%AB

### 反省点
・セキュリティの勉強不足
・関数の勉強不足

セキュリティに関する問題には、それに関連する関数の話が多かったように思います。セキュリティは出題率13.3％とされていますが、「30%位ない？？？」って気持ちでした。（単純に苦手というのもありますが…）
関数の方は、コラムや模擬試験から出題されるものを中心にしか勉強していなかったので、爪が甘かったなと思います。模擬試験で触れているものもあれば、全く勉強していない！という関数も出題されました。
対策で言われているように、公式リファレンス全体をざっとでいいから目を通して、コードを書いてみることが大事だと思います。


### 実行環境
模擬試験にはxdebagに関する出題もあるので、一番は環境構築を行ってその中で書くことなのですが
そこまでの余裕がない場合はブラウザでコードを書ける環境を利用するのがおすすめです。

- **paiza.IO**
こちらはPHPバージョン指定は行えません。
paizaではPHPの受講も可能なので始めたばかりの人にもおすすめ。

https://paiza.io/ja/projects/new

- **3v4l.org**
こちらはPHPバージョン指定が行えます。ただ、コードを実行するたびにURLが変動します。

https://3v4l.org/

以下はちゃんと環境構築を行いたいという方向け。
PHP技術者認定機構にて環境構築を解説してくれているので、こちらを活用すると良いと思います。

https://www.phpexam.jp/archives/3953#index_id2

### 模擬試験をやる必要性はある？
#### ある。
もちろん全く同じ問題は出ませんが、ここである程度の出題方法・傾向を見ることができるので活用する方が良いと思います。


### まとめ
私の失敗談をしっかり見て、同じ轍を踏まないように万全で望んでください。笑
とにかく「たくさん書いてたくさん実行」が一番の近道だと思います。

### 余談
[上級試験向けのセミナー](https://peatix.com/event/4300058/viewhttps://www.amazon.co.jp/PHP8%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E4%B8%8A%E7%B4%9A%E8%A9%A6%E9%A8%93%E5%85%AC%E5%BC%8F%E5%95%8F%E9%A1%8C%E9%9B%86%E4%B8%8A%E5%B7%BB%E3%83%99%E3%83%BC%E3%82%BF%E7%89%88-%E5%8F%A4%E5%BA%84%E9%81%93%E6%98%8E/dp/B0DMJS9LKJ)が開催されたり、PHP8上級試験の問題集ベータ版が発売されたようです。興味ある方は見てみてください。