4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP/キャスト】型指定を意識する

Posted at

##はじめに
PHPで実装する時、型指定は意識していますか。
PHPでは変数に文字列を入れればその変数はstring型になり、また整数を入れればint型になります。

PHP は、変数定義時に明示的な型定義を必要と(または、サポート) しません。ある変数の型は、その変数が使用される文により定義されます。 これは、ある文字列を変数 var に代入した場合には、 var は文字列になることを意味しています。 ある整数値を var に代入した場合には、 その変数は整数になります。
引用:PHP: 型の相互変換 - Manual

なので変数の型が自動で決まるので意識していないという方もいるかと思います。
しかし予期せぬエラーが起きたり、TypeScriptなど型指定が厳密な言語で実装する時にも困らないようにするためだったりと日頃から型指定は意識しておきたいですね。

##キャストで強制的に型を変更する
PHPで型を変更したい時はキャストすることで可能です。
※キャストは割と強引な方法だと思いますので、例えばRequestで受け取った型がちゃんと正しいか確認した後とかに使う手段の1つだと思っておいてください。

使用可能なキャストは下記です。

  • (int), (integer) - 整数へのキャスト
  • (bool), (boolean) - 論理値へのキャスト
  • (float), (double), (real) - float へのキャスト
  • (string) - 文字列へのキャスト
  • (array) - 配列へのキャスト
  • (object) - オブジェクトへのキャスト
  • (unset) - NULL へのキャスト

引用:PHP: 型の相互変換 - Manual

例えば「01234」がstring型で定義されていた時にint型に変更したい時は、変更したい変数の前に(int)とつけるだけで大丈夫です。

$string = '01234';
$int = (int)$string;
echo $int;

//$intの結果は「1234」のint型になります。
//※int型なので「01234」と言う数字は不適で「1234」になります。

##おわりに
いかがでしたでしょうか。
どの言語を実装する時にでも困らないように型指定を考えながら実装することは良いかもしれませんね。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?