スキップしてメイン コンテンツに移動

PHP7.4の新機能

PHP7.4にバージョンアップされましたので、新機能をまとめて

紹介します。


■新機能

1)型付きプロパティ

 <?php

class User {

    public int $id;

    public string $name;

}

 ?>


2)アロー関数

暗黙的な値スコープを持った関数を定義する簡便な文法を提供します。

<?php

$factor = 10;

$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);

?>


3)返り値の型を狭めたり、引数の型を広げたりする 

<?php

class A {}

class B extends A {}


class Producer {

    public function method(): A {}

}

class ChildProducer extends Producer {

    public function method(): B {}

}

?>


4)Null 合体代入演算子 「??」

<?php

$array['key'] ??= computeDefault();

// 上記は、以下にほぼ等しい

if (!isset($array['key'])) {

    $array['key'] = computeDefault();

}

?>


5)配列内での値のアンパック

<?php

$parts = ['apple', 'pear'];

$fruits = ['banana', 'orange', ...$parts, 'watermelon'];

// ['banana', 'orange', 'apple', 'pear', 'watermelon'];

?>


6)数値リテラルのセパレータ

数値リテラルは、桁と桁の間にアンダースコアを挿入できるようになりました。

<?php

6.674_083e-11; // float

299_792_458;   // decimal

0xCAFE_F00D;   // hexadecimal

0b0101_1111;   // binary

?>


7)弱参照

弱い参照により、オブジェクトが破棄されるのを防がないオブジェクトへの参照を保持することが可能です。


8)__toString() から例外をスロー可能に

__toString() から例外をスローできるようになりました。以前は、この場合には致命的なエラーが発生していました。この関数内に既に存在する、回復可能な致命的なエラーは Error 例外クラスに変換されます。


9)CURL

CURLFile は、CURL拡張機能が libcurl 7.56.0 より新しいものでビルドされた場合は、通常のファイル名に加えて、ストリームラッパーをサポートするようになります。


10)Filter

FILTER_VALIDATE_FLOAT フィルタは min_range と max_range オプションをサポートするようになりました。 これは、FILTER_VALIDATE_INT と同じセマンティクスです。


11)FFI

FFI は、ネイティブ関数を呼び出したり、ネイティブな値にアクセスしたり、Cライブラリで定義されたデータ構造を生成/アクセスする簡単な方法を提供する新しい拡張機能です。


12)GD

画像に scatter フィルタを適用するための IMG_FILTER_SCATTER が追加されました。


13)Hash

Castagnoli 多項式を使った crc32c ハッシュが追加されました。 CRC32 バリアントは、 iSCSI, SCTP, Btrfs, ext4 のようなストレージシステムで使われています。


14)マルチバイト文字列

str_split() と同等の機能を提供するものの、バイトではなく、コードポイント単位で動作する mb_str_split() 関数が追加されました。


15)OPcache

コードを事前ロードする機能 がサポートされました。


その他は、正規表現 (Perl互換)、PDO、PDO_OCI、PDO_SQLite、SQLite3などがあります。

コメント

このブログの人気の投稿

gitよく使うコマンド集

よく使うgitのコマンド集をまとめてみた。 1.ローカルリポジトリの登録  #git init 2.gitの状態を確認  #git status 3.gitのファイルを追加  #git add . 4.ローカルのマスタにコミットする  #git commit -m "体温管理アプリの初期化" 5.リモートリポジトリを登録する  #git remote add origin https://github.com/ユーザーID/リポジトリ名  例)git remote add origin https://github.com/githubkyo/taionkanri 6. リモートリポジトリの変更履歴の取得 git fetch origin master 7.差分のあるファイル名を表示 > git diff --name-status ローカルブランチ名 origin/リモートブランチ名 【例】 > git diff --name-status master origin/master 8.リモートのファイルのみをローカルに反映する。 git checkout origin/master --src/Eccube/Resource/template/default/default_frame.twig 9.別ブランチをマスタへマージする git checkout master git merge other_branch 以上で、随時更新していく予定。

MongoDB入門編 その1)

mogoDBについて、勉強しながら、紹介していきます。 1.インストール  https://www.mongodb.com/try/download/communityにアクセスして、Available Downloadsの ところから、ダウンロードして、手順に沿ってインストールする。 2.サービスの起動と停止 起動:sudo service mongodb start 停止:sudo service mongodb stop 3.mongoシェルの起動 #mongo 4.実際に使ってみる。 ・用語  MongoDBとRDBとの比較  -------------------------------------  MongoDB          | RDB  -------------------------------------  データベース     | データベース  -------------------------------------  コレクション     | テーブル  -------------------------------------  ドキュメント     | 行(レコード)  -------------------------------------  フィールド       | 列  -------------------------------------   ・データベースの作成  >use study   switched to db study      これだけで、studyというデータベースができました。     > db.stats() {     "db" : "study",     "collections" : 0,     "objects" : 0,     "avgObjSize" : 0,     "dataSize" : 0,     "stora...