古庄親方の上級試験コラム#004「言語リファレンス > 型 その3」

PHPでは、変数には型があり、関数のパラメータや戻り値、クラスのプロパティに型の指定をする事ができます。 https://www.php.net/manual/ja/language.types.type-system.php

「スカラー型と配列」以外の型は、以下の通りです。

ヌル(null)は、値として「null」のみをもつ型です。
「未定義」を意味するため、例えば「unsetされた値」や「未定義の値」などは、nullになります。
boolのtrue/falseと同じく、nullも「大文字で書いても小文字で書いても」nullと認識されます。

リソース(resource) は「外部リソースへのリファレンス」です。
典型的なリソース型としては「ファイルstream」「MySQLやPostgreSQLなどのDB接続」などがあると思います。
https://www.php.net/manual/ja/resource.php に「リソース型の一覧」があるので、一度見てみるとよいでしょう。

Enum(詳細は後ほど)は、PHP 8.1.0以降で出てきた新しい型です(そのため、PHP8上級試験の試験範囲対象外です)。
Enumは「列挙型」と呼ばれるもので、他言語でもいくつか見かけますが「取りうる値を限定した独自の型を定義する事ができる」ようになります。
試験範囲の対象外ではありますが便利な機能ではあるので、学習しておくとよいでしょう。

オブジェクト(object)は、基本的には「クラスに対し、new命令によって作られる変数」である、と理解するとよいでしょう。
「クラス」については、後ほどまた詳細に学んでいきます。
オブジェクトの型の確認は、実際には「どのクラスのオブジェクトか?」が重要であるため、get_debug_type()のほうが格段に使いやすいと思います。
クラスについての詳細な学習は、また別の章で詳しく説明していきます。

クラス内での関係を示す相対型として self、 static、 parent があります。
「自分自身のインスタンスを返すstaticなメソッド」などの時に使う事ができます。
これもクラスの「継承」の知識が必要なので、もし「クラスの継承」についての知識に自信が無い時は、一度先に進んで「クラスについて」しっかり学習をした後、もう一度読み直すとよいでしょう。

このコラムに関連するコードはこちらになります( https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/004.php )。
Enumについては、PHP 8.0環境だとエラーになるので、コードを分けています( https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/004_NotTested.php )。


PHP8技術者認定試験上級/準上級試験については以下をご覧ください。
https://www.phpexam.jp/summary/expert8/

同模擬試験については以下をご覧ください。
https://study.prime-strategy.co.jp/study/ph8ex1/

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次