0
0

More than 3 years have passed since last update.

[php初学者]型宣言とかnull系について

Posted at

phpの型宣言

phpは7.0以降型宣言ができるようになりました。
元々は自動で型変換をしてくれていました。(coercive)
しかし、それだと見落としがちなバグなどに気づかないまま開発している...なんてことも多々あるらしく、この新機能はとても嬉しいものであったりします。

sample.php
<?php
string $sample = 'sample';
sample1($sample);
sample2($sample);

//デフォルト
function sample1($sample1){
  var_dump($sample1);
}
//新機能
function sample2(string $sample2){
  var_dump($sample2);
}

例えば、sample2の引数$sample2の型をintとかに変更するとエラーが出ると思います。

戻り値の型指定

これに加え、関数の戻り値も指定することができました。

sample.php
<?php
string $sample = 'sample';
sample1($sample);
sample2($sample);

//デフォルト
function sample1($sample1){
  var_dump($sample);
}
//新機能
function sample2(string $sample2): string{
  return sample2 . '&test2';
}

: stringとかで指定できます。
ここをintとかに変えればエラーが出るはず...(出るよね?...)

nullableについて

変数内にnullを含めるか含めないかの違い。
phpでは、?が使われます。(デフォルトのやり方でもできる= null

sample.php
<?php
string $sample = 'sample';
sample1($sample);
sample2($sample);

//デフォルト
function sample1($sample1){
  var_dump($sample);
}
//新機能
function sample2(?string $sample2): string{
  return sample2 . '&test2';
}

?string $sample2?がnullableの部分になります。
phpは、7.1以降使えます。

null合体演算子

簡単に言えば、??←これですね。

説明
null合体演算子は「??」の左辺がnullでなければ左辺を返し、nullであれば右辺を返します。

sample.php
<?php
//1行目
$user = $who ?? 'nobody';
//2行目
$user = $who ?? $where ?? 'nobody&not here';
?>

上記は、phpマニュアルと似たように書きました。
1行目 $whoがnullの場合、'nobady'を返す
2行目 $whoがnullの場合、さらに$whereがnullの場合、'nobody&not here'を返す
と言う意味になります。

簡単に言えば、if($who == null)$user = 'nobady'を短縮した形になります。
これは、7.0以降にでた新機能です。

終わりに

めちゃくちゃ雑な説明になってしまい、すみません。。。
現在、少しずつphp, Laravel, AWSとかエンジニアに必要な基礎知識を吸収中です。
今は、自分の再度確認用or復習用として記事を書いています。
もう少しコアで面白い記事書けるように日々精進して参ります!

0
0
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
0
0