こんにちは、エンジニア経験3年目のヒカルです。
PHPを学んでいるとPHP5やPHP7など何が違うのかわからない人
は多くいます。
PHP7に変わってどんなポイントが重要になるのかなど、今回はPHP7についてわかりやすく紹介していきます。
PHPを学び始めた人やPHP7がなんなのかわからない方は、ぜひ読んでみてください。
目次
PHP7の基本
PHPとはWebのアプリケーションやWebサービスに特化しているプログラミング言語で初心者でもはじめやすいです。
PHP7は以前まで主流であったPHP5とどんなところが異なるのかなども紹介していきます。
PHP7は最新のバージョン
PHP7は2015年にアップデートされた最新のバージョンで2004年にPHP5がリリースされてから11年ぶりです。
また、PHP5は2018年にPHP5.6のサービスが終了して、2021年現在はPHP7が主流になっています。
どのバージョンを使うべきなのか迷っている人も多くいらっしゃると思いますが、最新バージョンがおすすめです。年が経つにつれてサービスが停止するバージョンが増えているため、できるだけ最新のバージョンを使うことで長く利用ができます。
PHP5とPHP7の異なるポイント
PHP5とPHP7の一番異なるポイントは3つあります。
処理速度が上がった
PHP7とPHP5で異なるのは処理速度であり、PHP5の処理速度の2倍ほどのスピードで処理が完了します。
ネットにおいて一番重要でもあるのが処理のスピードでもあるので、PHP7はおすすめです。
新しい関数の追加と削除
PHP7から新しい関数が導入されました。
逆にPHP5では導入されていた関数が削除されてしまったケースもあります。
PHP7の追加機能
PHP5からPHP7にバージョンアップされて追加された機能はいくつかあります。
スカラー型宣言や戻り値の型宣言、演算子などさまざまです。
スカラー型宣言
スカラー型宣言はPHP5で導入されたクラスや配列、インターフェイスなどの型宣言を強化することができます。
全部で4つ追加されており、整数、論理値、文字列、浮動小数点数があります。
以下がサンプルプログラムです。
1 2 3 4 5 6 7 8 |
<?php // デフォルトのモード function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1)); |
上記のコードを出力すると以下のような結果です。
1 |
int(9) |
出力結果もint型になっており、int型を指定しているので、上記の結果になります。
戻り値の型宣言
戻り値の型宣言とは引数の型宣言と同じで関数が戻す値がどの型になるのかを宣言することが可能です。
引数の型宣言で使える型と戻り値の型宣言で使えるものは同じです。
以下はサンプルのプログラムです。
1 2 3 4 5 6 7 8 9 10 |
<?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); |
上記のコードを出力すると以下のような結果です。
1 2 3 4 5 6 |
Array ( [0] => 6 [1] => 15 [2] => 24 ) |
戻り値の宣言をして関数が返す値の型を指定することが可能です。
宇宙船演算子
宇宙演算子は式を比較するために使われる演算子です。PHPの比較表のルールに則って比較されます。
以下がサンプルのコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php // 整数値 echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // 浮動小数点数値 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // 文字列 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?> |
aとbが等しいと0で、aがbより大きい場合は1、aがbより小さい場合は-1です。
Null合体演算子
Null合体演算子はシンタックスシュガーとしてPHP7から追加されました。
シンタックスシュガーとは、わかりにくい複雑な内容を同じ意味でシンプルな書き方で書くことができることです。
以下がサンプルのコードです。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php // $_GET['user'] を取得します。もし存在しない場合は // 'nobody' を用います。 $username = $_GET['user'] ?? 'nobody'; // 上のコードは、次のコードと同じ意味です。 $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // 合体演算子を連結することもできます。次のように書くと、 // $_GET['user']、$_POST['user'] そして 'nobody' // の順に調べて、非 &null; が定義されている最初の値を返します。 $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'; ?> |
上記のように三項演算子をより簡単に表すための演算子です。
この演算子は、第一オペランドが非nullの値だった場合は返し、非nullの値でなかった場合は第二オペランドを返すコードになります。
オペランドとはコンピューターにおける、値や変数のことで10×4という計算式があれば、10と4がオペランドになります。
PHP7に移行させる時の注意ポイント
PHP5からPHP7に移行させる時の注意点は2つあるので確認が必要になります。
注意ポイントを無視すると、動かなくなってしまうこともあります。
16進形式の数値を含む文字列は数値として認識されない
PHP7から16進形式の数値を含む文字列は数値と認識されなくなりました。
16進数とは、ページの色を指定するカラーコードと同じでアルファベットと数字で構成されています。
以下がサンプルコードです。
1 2 3 4 |
<?php var_dump("0x10"=="16"); // PHP5: true, PHP7: false var_dump(is_numeric("0x10")); // PHP5: true, PHP7: false ?> |
上記のコードを出力すると以下のような結果です。
1 2 |
bool(false) bool(false) |
PHP5まではfalseという結果がtrueで認識されていましたが、PHP7からは認識されません。
PHP7に対応しているモジュールの確認
PHP7に対応しているモジュールと対応していないモジュールがあります。
拡張モジュールとは、PHPの機能を拡張させるためのもので、機能を便利にさせます。
PECLなどのPHPに組み込まれていないモジュールもPHP7から対応されないケースがあるので、確認が必須になります。
まとめ
いかがでしたでしょうか?
PHP5からPHP7に変わったことで、使える機能や使えなくなってしまった機能がいくつかあります。
PHP7を使う場合はぜひ、参考にしてみてくださいね。