phpの型宣言
phpは7.0以降型宣言ができるようになりました。
元々は自動で型変換をしてくれていました。(coercive)
しかし、それだと見落としがちなバグなどに気づかないまま開発している...なんてことも多々あるらしく、この新機能はとても嬉しいものであったりします。
<?php
string $sample = 'sample';
sample1($sample);
sample2($sample);
//デフォルト
function sample1($sample1){
var_dump($sample1);
}
//新機能
function sample2(string $sample2){
var_dump($sample2);
}
例えば、sample2の引数$sample2の型をintとかに変更するとエラーが出ると思います。
戻り値の型指定
これに加え、関数の戻り値も指定することができました。
<?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
)
<?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であれば右辺を返します。
<?php
//1行目
$user = $who ?? 'nobody';
//2行目
$user = $who ?? $where ?? 'nobody¬ here';
?>
上記は、phpマニュアルと似たように書きました。
1行目 $who
がnullの場合、'nobady'
を返す
2行目 $who
がnullの場合、さらに$where
がnullの場合、'nobody¬ here'
を返す
と言う意味になります。
簡単に言えば、if($who == null)$user = 'nobady'
を短縮した形になります。
これは、7.0以降にでた新機能です。
終わりに
めちゃくちゃ雑な説明になってしまい、すみません。。。
現在、少しずつphp, Laravel, AWSとかエンジニアに必要な基礎知識を吸収中です。
今は、自分の再度確認用or復習用として記事を書いています。
もう少しコアで面白い記事書けるように日々精進して参ります!