PHPバージョンアップの際に削除された関数(MySQL関数等)を使う方法
PHP5系で制作されたシステムを8系でも動くようにリプレイスしてほしいという案件があった。ざっとソースコードを見てみると7系で削除されたMySQL関数が使われているように見受けられた。ただ何故か8系の環境に各種ファイルをアップロードすると正常に動作した。削除された筈の関数が使えている方法を以下にメモ。
ソースコード
<?php
if( !function_exists('mysql_connect') ){
function mysql_connect(string $host, string $user, string $pass, bool $new_link = false, int $clinet_flags = 0){
$mysqli_connect = mysqli_connect($host, $user, $pass);
return $mysqli_connect;
}
}
if( !function_exists('mysql_set_charset') ){
function mysql_set_charset(string $charset, mysqli $link_identifier = NULL){
return mysqli_set_charset($link_identifier, $charset);
}
}
if( !function_exists('mysql_select_db') ){
function mysql_select_db(string $dbname, mysqli $mysqli_connect){
return mysqli_select_db($mysqli_connect, $dbname);
}
}
if( !function_exists('mysql_query') ){
function mysql_query(string $sql, mysqli $mysqli_connect){
$result = mysqli_query($mysqli_connect, $sql);
if( !$result ){
//エラー処理
die();
}
return $result;
}
}
function_existsで関数が定義されているかチェックし、定義されていない場合は独自関数という形でMySQL関数を定義する形を取っていた。
所感
上記のような形で対応するといった発想は自分には無かったので勉強になった。
あんまり無いケースだとは思うけど似たようなリプレイス案件があった時のために覚えておきたいところ。
関連記事
-
-
PHPでパスワードを保存する際に暗号(パスワードハッシュ)化させ、ログイン認証時に用いる方法
PHPでログイン認証を組み込む際に今までは特に暗号化は行っていなかった。と言うの ...
-
-
PhpSpreadsheetでフォーマット用のエクセルを読み込み、指定したセルにデータを書き込んだ上で別名で保存する方法
PHPで納品書等のフォーマット用のExcelを読み込み、指定したセルにデータを書 ...
-
-
PHPで指定月の月末日を取得
今月の、だったらdate('t')でいくけど指定月の場合は どうしたらいいのか分 ...
-
-
CodeIgniterのバージョンの調べ方
CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...
-
-
ディレクトリに設置してあるフォルダをPHPで調べて表示
やりたい事はsampleというディレクトリがあったとして、その直下にあるフォルダ ...