Domanda Come sovrascrivere le funzioni PHP integrate?


Mi piacerebbe scavalcare, diciamo mysql_num_rows con diciamo di seguito:

$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 supporta la funzione di sovrascrittura integrata?


ESTENSIONE


11
2018-03-05 18:01


origine


risposte:


Penso che potrebbe essere fatto in questo modo:

//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);  
}

trovato qui

Si noti che ogni host deve avere http://php.net/manual/en/book.apd.php installato sul server.

modificare

Un altro modo è utilizzare gli spazi dei nomi

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

Provalo qui


12
2018-03-05 18:31



Installare runkit & uso runkit_function_redefine. Lo fai solo su sviluppo / testserver, mai in produzione.


1
2018-03-05 18:02