勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPバージョンアップの際に削除された関数(MySQL関数等)を使う方法

  PHP

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

  関連記事

Codeigniter3で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法

CodeigniterでCSSやJSファイル等の外部ファイル読み込みたかった。ま ...

PHP8系で「Warning: Constant xxxxx already defined in」エラーの対応方法

PHP8系&WordPress6.4.3で「Warning: Const ...

PHPでお問い合わせ等のform構築時にCSRF対策を行う方法

他社が制作されたお問い合わせフォームを改修する案件があった。ソースコードを拝見し ...

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズ

PHPで縦横どちらかが指定の長さを超えた場合、 比率を保ったままリサイズしたかっ ...

SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法

メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...