【PHP7.4】ついにPHPにプロパティ型指定がやってくる
Typed Properties 2.0というRFCが投票フェーズに入ったのですが、2018/09/13時点で賛成48反対0となっていて、ほぼ決まりの状態です。 Typed Properties 2.0 どういうRFCなのかというと、これです。 class User { public int $id; public string $name; public function...
View Article【PHP7.4】PHPで簡単に永続プリロードできるようになる
PHPはHTTPリクエストが来るたびに全てのPHPコードをバイトコードに変換し、そして実行しています。 毎回そんなことやってるのにあれだけ速度が出るのは驚異的ですが、それでもやはりコンパイルにかかる時間だけどうしても遅くなってしまいます。 そこで、もっと高速化するためにOPcacheのような仕組みが存在します。...
View Article【PHP7.4】PHPの新たな演算子??=ってなんぞ?
2019/01/22(JST)にImplement ??= operatorという謎のマージがありました。 RFC RFCは賛成37、反対4の圧倒的多数で可決されています。 なお投票開始は2016/03/24で、終了が2016/04/02です。 つまり、それ以来3年弱ほったらかされていたということです。 ??=ってなに? RFCでは『Null Coalescing Assignment...
View ArticlePHP7.4の新機能
PHP7.4.0その2 / PHP7.4.0その1 / PHP7.3.0 / PHP7.3.0α1 PHP7.4で実装される新機能を紹介してみます。 7.3以上の大きな変更が複数導入されることになっていて、大丈夫なのかこれ。 RFC Foreign Function Interface 賛成24、反対15で受理。 $ffi = FFI::cdef(" typedef unsigned int...
View ArticlePHP7.4ではPEARがインストールされなくなる
Disable PEAR 2019/02/01にDisable PEAR by defaultというプルリクが提出され、2019/02/11にマージされました。 commitからmerge日はどうすればわかるのだろう? 内容 Installation of PEAR (including PECL) is no longer enabled by default. It can be...
View Article【PHP8】short_open_tagにさよなら、しないかも?
Deprecate PHP Short open tagsというRFCが投票フェーズに入りました。 投票期間は2019/04/10から2019/04/24、採択には投票数の2/3+1の賛成が必要です。 Deprecate PHP Short open tags Short open tagsとは PHPの開始を示すタグは<?php、もしくは<?=です。 後者は<?php...
View Article【PHP7.4】PHPでアロー関数を使えるようになる
かつて、提出されたもののいつのまにか取り下げられていたArrow FunctionsというRFCがありました。 // $x*2を返す関数 $mul2 = fn($x) => $x * 2; // 使い方 $mul2(3); // 6 が、なんかV2として復活してました。 しかも今回は提案者として重鎮Nikitaが参戦しています。...
View Article【PHP8】PHPの三項演算子が他言語の実装に一歩近付く
Deprecate left-associative ternary operatorというRFCが投票に入っています。 提案者のNikitaは、最近アロー関数やらAlways generate fatal error for incompatible method signaturesやらConsistent type errors for internal...
View Article【PHP8】演算子.と+の優先順位が変わる
PHP7.3現在、演算子+、-と.の優先順位は同じです。 すなわち左から右に評価されます。 echo 1 . 2 + 3 . 4; echo ((( 1 . 2 ) + 3 ) . 4 ) ; // これと同じ マニュアルでもわざわざ例を挙げて解説しています。 さて2019年3月にChange the precedence of the concatenation...
View ArticlePHP7.4 の FFIを試した
FFIを動かす準備と確認 PHP7.4に入るFFIのマニュアルが出来ていたので試してみる。 https://php.net/ffi とは言ってもCの操作のマッピングに近いので、もしかしたらマニュアルよりCのソースを見ないと意味が分からないかもしれない。 まずはソースを取ってきてコンパイルする。 git clone https://github.com/php/php-src.git cd...
View Article【PHP7.4】__toString()が例外を吐けるようになる
プロパティの設定を必須にしたかったとしましょう。 class HOGE{ public $var; public function __toString(){ if(!$this->var){ throw new \Exception('$var must set.'); } return sprintf('$var is %1$s', $this->var); } } try{...
View Article【PHP7.4】数値セパレータが書けるようになる
echo 2305843008139952128 === 230584308139952128; // true?false? echo 10000000000000000; // 0が何個? わかりにくいですね。 ということでどうにかしようというRFCが提出されました。 以下はNumeric Literal Separatorの日本語訳です。 Numeric Literal Separator...
View ArticlePHP7.4の新機能その2
PHP7.4その1 / PHP7.4その2 2019/06/13、PHP7.4.0α1がリリースされました。 今後はベータ、RCと完成度を高めていき、7.4.0のリリースは2019/11/28が予定されています。 なお仕様フィックスは2019/07/13で、それ以降は大きな変更は入らないようになります。...
View ArticlePHP 7.4 alpha 1 がリリースされたので記念に野良ビルドしてみる
はじめに 待望の PHP 7.4 がリリースされました!ということで記念に野良ビルドします🐘 野良ビルド集 CentOS 7上にPHP 7.3 beta 1 を野良ビルドする Raspberry Pi + Raspbian Stretch Lite に PHP 7.3 を野良ビルドする PHP7.2がリリースされたので野良ビルドしてみた 動作環境 CentOS 7 $ php -v PHP...
View Article【PHP7.4】波括弧による文字列|配列アクセスが削除される
大改修が入ることはないでしょうと言ったな、あれは嘘だ。 2019/07/22の仕様凍結を目前に、いくつかのRFCが駆け足で投票に入っています。 そのうちのひとつで、あらゆるPHPプログラムに影響する可能性のある変更が入りました。 Deprecate curly brace syntax for accessing array elements and string...
View Article【PHP7.4】PHP7.4では変数に型指定できる & 菱形継承っぽいものができる
PHPのすごい開発者Nikita Popovが書いたTyped Properties and more: What's coming in PHP 7.4?というスライドを見ていたらなにやら面白かったので、適当に紹介してみる。 変数の型指定 PHP7.4ではプロパティに型指定できるようになりましたが、実はプロパティではない只の変数にも型指定することができます。 class Dummy{ public...
View Article【PHP7.4】レガシーな仕様はどんどんしまっちゃおうねぇ
恒例の仕様凍結直前駆け込みRFC第二弾。 色々な古い書き方について、PHP7.4でE_DEPRECATEにし、PHP8で削除を目指すRFCが投票中です。 以下はDeprecations for PHP 7.4の日本語訳です。 Deprecations for PHP 7.4 Introduction...
View ArticlePHP7.4.0ベータ3は何処に行った?
2019/07/25、PHP7.4.0ベータ1がリリースされました。 2019/08/08、PHP7.4.0ベータ2がリリースされました。 2019/08/22、PHP7.4.0ベータ4がリリースされました。 あれ? ベータ3は何処? internalでもベータ3飛ばされた?と聞かれていますが、「いや、PHPのバージョンスキップは誇りであり伝統なのだよ」とか返されています。...
View Article【Laravel5.8】PHP7.4でTrying to access array offset on valueが山盛り出るようになった
Laravel5.8で試したからLaravel5.8としているだけで、他のバージョンや、あるいは他のフレームワークでも発生すると思います。PHP7.4.0がリリースされました。で、PHP7.4からスカラー型変数に配列アクセスするとE_NOTICEが出るようになりました。$a=null;echo$a[1];これはPHP7.3までは何も言いませんでしたが、7.4ではE_NOTICEが発生します。さらにP...
View Article【PHP7.4】PHP7.4がリリースされたので新機能全部やる
2019/11/28にPHP7.4.0がリリースされました。ということで、ここではドキュメント化されている新機能や変更点を片端から試してみます。これら以外にもドキュメント化するほどでもない軽微な変更が多々入っているはずですし、単なるバグ修正も山ほどあるのですが、今回はそのあたりには触れません。把握しきれていませんしね。インストール古いXAMPPが入っていたらディレクトリまるごと削除。最新のXAMPP...
View Article