首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖内置PHP函数?

问如何覆盖内置PHP函数?
EN

Stack Overflow用户
提问于 2013-03-05 18:01:24
回答 2查看 20.8K关注 0票数 16

我想重写,假设是mysql_num_rows,假设如下:

代码语言:javascript
复制
$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的用户应该只包含这个函数覆盖,所有属性、函数调用、函数返回值、参数值等等都应该保持不变。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 18:31:35

我认为可以这样做:

代码语言:javascript
复制
//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。

编辑

另一种方法是使用命名空间。

代码语言:javascript
复制
<?php
    namespace mysql2pdo;
    use PDO;
    function mysql_connect() {
       return new PDO();
    }
    echo mysql_connect(); // Causes error because we don't have the parameters
?>

在这里测试一下

票数 20
EN

Stack Overflow用户

发布于 2013-03-05 18:02:53

安装runkit &使用重新定义。只在开发/测试服务器上这样做,而不是在生产中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15230883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档