How to override built-in PHP function(s)?

前端 未结 2 2009
温柔的废话
温柔的废话 2020-12-01 16:25

I would like to override, let\'s say mysql_num_rows with let\'s say following:

$dataset = array(array(\'id\' => 1, \'name\' => \'Zlatan\',         


        
相关标签:
2条回答
  • 2020-12-01 17:10

    I think it could be done like so:

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

    found it here

    Notice that every host must have http://php.net/manual/en/book.apd.php installed on the server.

    Edit

    Another way is to use namespaces

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

    Test it here

    0 讨论(0)
  • 2020-12-01 17:20

    Install runkit & use runkit_function_redefine. Only do it on development/testservers, never in production.

    0 讨论(0)
提交回复
热议问题