開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. PHP8の名前付き引数を使ってみた
no-image

PHP8の名前付き引数を使ってみた

お久しぶりです、かっちゃんです。
今回はPHP8から使用できるようになった名前付き引数を見ていきたいと思います。

名前付き引数とは

関数呼び出し時の引数に対して引数名を明示することができる様になりました。
以下が名前付き引数を用いたサンプルコードです。

function testFunc (int $id, string $name) {
    //  省力
}

testFunc (
    id: 1,
    name: 'test_taro'
);

名前付き引数を使うことによってどの様なメリットがあるのでしょうか。
見ていきましょう。

名前付き引数を使うことのメリット

引数が何を意味する情報なのかが分かる

以下は従来の引数の書き方を用いたサンプルコードです。

function testFunc (int $id, string $name) {
    //  省力
}

testFunc (
    1,
    'test_taro'
);

関数の呼び出し方を見てください。
従来の引数の書き方ですと引数で渡す情報が何を意味する情報か分かりません。

以下は名前付き引数を用いたサンプルコードです。

function testFunc (int $id, string $name) {
    //  省力
}

testFunc (
    id: 1,
    name: 'test_taro'
);

関数の呼び出し方を見てください。
名前付き引数を用いると引数が何を意味する情報なのかがとても分かりやすいです。
引数が多くなっていき、複雑なコードになってくると名前付き引数はとても助かりますね。

デフォルト値を持つ引数を順番によらず省略することができる

以下は従来の引数の書き方を用いたサンプルコードです。

function testFunc (int $id = null, string $name) {
    //  省力
}

testFunc (
    null,
    'test_taro'
);

以下は名前付き引数を用いたサンプルコードです。

function testFunc (int $id = null, string $name) {
    //  省力
}

testFunc (
    name: 'test_taro'
);

名前付き引数ですとデフォルト値を持つ引数を順番によらず省略することができます。
従来の引数の書き方ですと末尾に着いている引数しか省略できませんでした。
こちらも引数が多い関数に対して非常に便利ですね。

引数の順番を気にしなくて良い

以下は従来の引数の書き方を用いたサンプルコードです。

function testFunc (int $id = null, string $name) {
    //  省力
}

testFunc (
    1,
    'test_taro'
);

以下は名前付き引数を用いたサンプルコードです。

function testFunc (int $id = null, string $name) {
    //  省力
}

testFunc (
    name: 'test_taro',
     id: 1
);

名前付き引数ですと引数の順番を変更しても問題ありません。
PHP組み込みの引数の順番がメチャクチャなarray系関数を、引数の順番を気にせず気分良く使えるのは非常に嬉しいですね。

最後に

名前付き引数を使用する時の注意点ですが、1つの関数に対して従来の引数の書き方と名前付き引数を混在して書くのはできるだけやめておきましょう。 混在した書き方ができないわけではないのですが、エラーの原因の1つになるので注意しましょう。

便利な機能ですが、自分自身も従来の引数の書き方が身に染みてしまっているので中々名前付き引数を使用することができていません。 これからちょっとずつ意識して使っていきたいと思います。

  • posted by かっちゃん
TOPに戻る