ブログ

BLOG

PHP8 で Deprecated: Optional parameter … declared before required parameter … is implicitly treated as a required parameter と出た

2023/05/15

PHP7.4 から PHP8 に変更したらこんなエラーが出た。

Deprecated: Optional parameter $param declared before required parameter $param2 is implicitly treated as a required parameter in … on line …

Optional parameter を required parameter の前に設置するのは暗黙的に required parameter として扱われる、という内容のエラー文です。

Optional parameter はデフォルト値を設定した引数で、 required parameter は必須の引数、つまりデフォルト値がない引数。

PHP8.0.0 から、デフォルト値を設定した引数の後ろに必須の引数を持ってきた場合は、デフォルト値を設定した引数のデフォルト値がなくなり、必須の引数として振る舞うこととなったようです。

参考: https://www.php.net/manual/ja/migration80.deprecated.php#migration80.deprecated.core

今回のことをコードで説明すると、

<?php 
  // $var2 の引数の前に $var のデフォルト値を設定した引数があるのでエラー文が表示される
  function foo($param = '', $param2) {}

  // こうすればよい
  function foo($param, $param2) {}
  function foo($param2, $param = '') {}

例外で、 Type $param = null の場合は型が暗黙的に nullable であることを示すためエラーが出ない模様。

ということで、このエラーが出た際は、必須の引数に変更するか引数の順番を変えるしましょう!

お問い合わせ・ご相談CONTACT

オクワスでは、Webを通して魅力を最大限に伝えるお手伝いをしております。ホームページ制作やWebからの集客などでのお困りごと、Web開発で人手が足りないなどございましたら一度お気軽にご連絡ください。

お問い合わせフォームまたは𝕏のDMからご相談お受けしております。

お問い合わせフォームへDMからご連絡ください
© 2015 - 2024 Okuda Kouki