PHPで関数の引数に型を指定する方法を現役エンジニアが解説【初心者向け】

初心者向けにPHPで関数の引数に型を指定する方法について現役エンジニアが解説しています。PHP5から変数の型を指定できるようになりました。型とは配列や数値や文字列などの種類のことで、データ型などと呼ばれています。PHPで関数の引数などに型宣言(タイプヒンティング)を実装します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

今回は、PHPで関数の引数に型を指定する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

PHPについてそもそもよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、PHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPで関数の引数に型を指定する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

PHPの型宣言とは

PHPでの変数の型は、基本的にプログラマが設定するものではありません。その変数が使用される文脈に応じ、PHPが実行時に決定します。

コーディング段階では、その変数が文字なのか配列なのか、といった型は分かりません。プログラムを書いていくときに、違う型のデータを扱うことがないように、細心の注意を払う必要があります。

しかしPHP5から型宣言(PHP5ではタイプヒンティングとも呼ばれていました)が導入されました。これによってコーディング時に型を確認できます。もし間違っていたとしても、早い段階で知ることができます。

型宣言で型を指定する方法

この型宣言は変数ではなく、関数の引数で使うことができます。

どんな型が使えるのかというと、array、bool、float、int、string、クラス名・インスタンス名、self、callable、iterable、objectがあります。
PHPのバージョンによって使える型宣言が異なります。公式サイトで確認しましょう。

以下のように関数の引数で型の宣言を書くことができます。

function array_summary(array $array, int $index)

このように書くことで、$arrayは配列、$indexは整数であることを指定できます。

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

では、実際に書いてみましょう。

ここでは、配列と数値を引数に取り、その数値の要素までの合計を返す関数を作ってみます。

function array_summary(array $array, int $index) // 引数をarrayとintに限定しています
{
  $sum = 0;
  for ($i = 0; $i <= $index; $i++) {
    $sum += $array[$i];
  }
  return $sum;
}

実際に使ってみましょう。

echo array_summary([1,2,3,4,5,6,7,8,9,10], 9);
// 55と表示します。

echo array_summary([1,2,3,4,5,6,7,8,9,10], 4);
// 15と表示します。

正しく使っている場合は、何の問題もありません。

ここで間違った型の引数を与えてみます。

echo array_summary('test', 2);

PHP Fatal error:  Uncaught TypeError: Argument 1 passed to array_summary() must be of the type array, string given

本来なら配列を入れるところに文字列を入れたところ、上記のようなエラーが出ました。

このように引数の型を強制できます。

このようにすることで、関数が間違った型を使って、間違った結果を返すことがないように、コーディング段階で強制できるのです。

筆者プロフィール

植西重史(うえにししげふみ)

職業プログラマー歴は2020年現在で27年、新卒入社当時はCOBOL・C言語。フリーランスになってからは主にPHPを使ってシステム開発、WordPressを使って企業ページなどを開発してきました。

TechAcademyではPHP/Laravel、はじめてのプログラミング、WordPressコースを担当しております。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、PHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。