相关疑难解决方法(0)

重新定义类方法或类

有没有办法在不使用典型继承的情况下重新定义类或其某些方法?例如:

class third_party_library {
    function buggy_function() {
        return 'bad result';
    }
    function other_functions(){
        return 'blah';
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能取代buggy_function()?显然这就是我想做的

class third_party_library redefines third_party_library{
    function buggy_function() {
        return 'good result';
    }
    function other_functions(){
        return 'blah';
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的两难:我更新了破坏我代码的第三方库.我不想直接修改库,因为将来的更新可能会再次破坏代码.我正在寻找一种无缝的方法来替换类方法.

我发现这个图书馆说它可以做到,但我很谨慎,因为它已经4岁了.

编辑:

我应该澄清一下,由于框架限制,我无法将类重命名third_party_librarymagical_third_party_library或其他任何内容.

为了我的目的,是否可以只在类中添加一个函数?我认为你可以用C#做​​一个叫做"部分类"的东西.

php methods class redefine

47
推荐指数
6
解决办法
6万
查看次数

是否可以替换php中的函数(如邮件)并使其执行其他操作?

我想在PHP中重写一个函数(比如说mail()函数),并且想要这样做,从现在开始调用mail()时,它将加载我的mail()版本而不是默认的php版本.这可能在PHP?

我想这样做的原因是因为我有数千行代码调用mail()而我不想重写所有这些代码.

同样为了将来参考,在计算机编程中,当你做这样的事情时它叫什么?

php function

19
推荐指数
2
解决办法
2万
查看次数

PHPUnit模拟功能?

我有一个有趣的场景,我需要定义一个函数,以便为另一个函数进行测试.我想测试的功能看起来像这样:

if (function_exists('foo') && ! function_exists('baz')) {
    /**
     * Baz function
     * 
     * @param integer $n
     * @return integer
     */
    function baz($n)
    {
        return foo() + $n;
    }
}
Run Code Online (Sandbox Code Playgroud)

我检查是否存在的foo原因是因为它可能在开发人员的项目中定义,也可能没有定义,并且该函数baz依赖于该函数foo.因此,我只想baz定义它是否可以调用foo.

唯一的问题是到目前为止,无法编写测试.我尝试在PHPUnit配置中创建一个引导脚本,该脚本将定义一个假foo函数,然后需要Composer自动加载器,但我的主脚本仍然认为foo没有定义.foo不是Composer包,我的项目不能要求.显然,Mockery也不适用于此.我的问题是,如果有更多有经验的PHPUnit遇到过这个问题并找到了解决方案.

谢谢!

php phpunit unit-testing mocking

19
推荐指数
1
解决办法
8763
查看次数

是否可以替换(monkeypatch)PHP函数?

你可以用Python做到这一点,但它可以用PHP吗?

>>> def a(): print 1
... 
>>> def a(): print 2
... 
>>> a()
2
Run Code Online (Sandbox Code Playgroud)

例如:

<? function var_dump() {} ?>
Fatal error: Cannot redeclare var_dump() in /tmp/- on line 1
Run Code Online (Sandbox Code Playgroud)

php monkeypatching function

17
推荐指数
3
解决办法
7150
查看次数

无法重新声明以前声明的函数

在我的网站上安装了一个脚本后,我有一个错误:

Fatal error: Cannot redeclare ae_detect_ie() (previously declared in /home/xdesign/public_html/Powerful/config.php:24) in /home/xdesign/public_html/Powerful/config.php on line 29
Run Code Online (Sandbox Code Playgroud)

这是一行:

function ae_detect_ie()
{
    if (isset($_SERVER['HTTP_USER_AGENT']) && 
    (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

我不明白我做错了什么!

该网站:http://fbswapes.com

相同的脚本正在另一台主机中运行.

php mysql function redeclare

3
推荐指数
1
解决办法
5万
查看次数