PEAR MDB Mail\Queue をPHP7対応させる案件の楽しいお話

2019-12-18

PEAR MDB Mail\Queue をPHP7対応案件の楽しいお話
※ご注意 MDB2の話ではありません。MDB Mail\Queueの話です

この記事はHP Advent Calendar 2018に参加しています。

MySQL関数からMySQLi関数へ移行

MySQL関数が各所にちりばめられているので全て補正する。
MySQLi関数への移行が低コスト

一部関数において引数が省略または逆になっているので注意。

詳細は丁寧にまとめられている下記から
MySQL関数からMySQLi関数への移行作業メモ

preg_replaceのe修飾子をpreg_replace_callback で置換

PHP7でpreg_replaceのe修飾子の挙動が変わるので要注意です。

こんなやつ

<?php
$hdr_value = preg_replace('\([\x80-\xFF])\e',
    '"=" . strtoupper("\1")',
    $hdr_value);

preg_replace_callback で置換

<?php
$hdr_value = preg_replace_callback(
    '\([\x80-\xFF])\',
    function ($matches) {
        return strtoupper($matches[0]);
    },
    $hdr_value);

dl()

PHP 5.3 以降で大半の SAPI からは削除されました。 また、PHP 7.0.0 では PHP-FPM からも削除されました。
問題記述部分をコメントアウトで対応wでもうごく