icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

今回は、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では、初心者でも、PHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する