[PHP]関数の戻り値にnull値の許容をタイプヒンティングさせる方法

PHP7では、関数の戻り値の方を制限するためのタイプヒンティング機能が追加されました。
PHP7.1では、このタイプヒンティングに対して、さらに”指定された型、もしくは、null”が返されること強制する、null許容型のタイプヒンティング機能が追加されました。

例えばstring or nullのreturnを強制したい場合、下記サンプルコードのように”?string”先頭へ”?”を付ければOKです。

<?php
function foo($option) : ?string
{
    if ($option == 1) {
        return "hello";
    }
    return null;
}

echo foo(1);
echo foo(0);

[PHP]無名関数を定義して、即時実行したい場合は?

javascriptでは、オブジェクトの名前空間の問題により、無名関数を作ったうえで、作成した無名関数を即時実行したい場合が多くあります。
phpで同様の事を行いたい場合、どのような記述を行えばよいでしょうか?

php7.0以降の場合は、javascriptと同様に下記のコードで実行することもできます

<?php
(function() {
    echo 'hello world'; 
})();

php5.xのバージョンしか使えない場合は、上記のコードほどシンプルではありませんが、下記のコードで無名関数を即時実行可能です。

<?php
call_user_func(function() { 
    echo 'hello world'; 
});

上記のコードはphp7.0以降でも動作するため、古いバージョンのphpサポートも必要なライブラリを作っている場合などは、後者の方が良いかもしれません。

[PHP]PHP7実行時、VCRUNTIME140.dll is missingエラーが出るとき

windowsでphp7を実行したとき、下記のエラーが出る場合があります。

Unable to start the program as VCRUNTIME140.dll is missing on your computer. 
Try reinstalling the program to fix this problem.

無いと出力されているVCRUNTIME140.dllですが、これはVisual C++ Runtime14.0の意味です。
ダウンロードページを見ると、下記の通りたしかにランタイムが必要との記載があります

VC11, VC14 & VC15
More recent versions of PHP are built with VC11, VC14 or VC15 (Visual Studio 2008, 2012 or 2015 compiler respectively)
– and include improvements in performance and stability.
– The VC14 builds require to have the Visual C++ Redistributable for Visual Studio 2015 x86 or x64 installed


該当のランタイムは、Microsoftのサイトより無料でダウンロード可能です。下記のリンクからダウンロードとインストールを行ってみて下さい。
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ

https://www.microsoft.com/ja-JP/download/details.aspx?id=48145

[PHP]composerのインストールでUnable to find the wrapper “https”エラー

PHPでcomposerをインストールしようとしたとき、以下のようにUnable to find the wrapper "https"エラーが出る場合があります。

>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Warning: copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
Warning: copy(https://getcomposer.org/installer): failed to open stream: No such file or directory in Command line code on line 1

この理由として、php.iniでhttpsが実行できない設定になっている可能性があります。

対処法は、php.iniを開きphp_opensslのextensionがコメントアウトされている場合は、コメントを外してください。
php.ini自体がない場合は、php.ini-developmentをコピーしてphp.iniを作ります。

#extension=php_openssl.* 
↓
extension=php_openssl.* 

また、phpのインストールディレクトリをデフォルトの位置(windowsだとc:\php)から変更している場合は、上記に加えてextension_dirの設定も必要になる場合があります。

; extension_dir = "ext"
↓
extension_dir = "C:\path\to\php\php-7.1.3\ext"