15

オーバーライドしたいのですが、mysql_num_rows次のようにしましょう:

$dataset = array(array('id' => 1, 'name' => 'Zlatan', 'onSOF' => 1), array('id' => 1, 'name' => 'Guest', 'onSOF' => 0));

function mysql_num_rows($dataset) {
    return sizeof($dataset);
}

PHP は組み込み関数のオーバーライドをサポートしていますか?


拡張中

既存のすべての関数をオーバーライドする OpenSource ソリューションを作成したいと考えていますmysql_*。その関数本体では、PDO インスタンスとメソッド、およびプロパティを使用します。

これは、すでに を使用していて、mysql_*PDO に完全に移行するのが難しいと感じているユーザーは、この関数オーバーライドを含めるだけでよく、すべてのプロパティ、関数呼び出し、関数の戻り値、引数値などは同じままにしておく必要があることを意味します。

4

2 に答える 2

19

私はそれが次のようにできると思います:

//First rename existing function
rename_function('strlen', 'new_strlen');
//Override function with another
override_function('strlen', '$string', 'return override_strlen($string);');

//Create the other function
function override_strlen($string){
        return new_strlen($string);  
}

ここで見つけた

すべてのホストにはhttp://php.net/manual/en/book.apd.phpがサーバーにインストールされている必要があることに注意してください。

編集

別の方法は、名前空間を使用することです

<?php
    namespace mysql2pdo;
    use PDO;
    function mysql_connect() {
       return new PDO();
    }
    echo mysql_connect(); // Causes error because we don't have the parameters
?>

ここでテストしてください

于 2013-03-05T18:31:35.297 に答える
2

runkit_function_redefineをインストールrunkitして使用します。開発/テストサーバーでのみ実行し、本番環境では実行しないでください。

于 2013-03-05T18:02:53.013 に答える