有没有办法在不使用典型继承的情况下重新定义类或其某些方法?例如:
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_library为magical_third_party_library或其他任何内容.
为了我的目的,是否可以只在类中添加一个函数?我认为你可以用C#做一个叫做"部分类"的东西.
我想在PHP中重写一个函数(比如说mail()函数),并且想要这样做,从现在开始调用mail()时,它将加载我的mail()版本而不是默认的php版本.这可能在PHP?
我想这样做的原因是因为我有数千行代码调用mail()而我不想重写所有这些代码.
同样为了将来参考,在计算机编程中,当你做这样的事情时它叫什么?
我有一个有趣的场景,我需要定义一个函数,以便为另一个函数进行测试.我想测试的功能看起来像这样:
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遇到过这个问题并找到了解决方案.
谢谢!
你可以用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) 在我的网站上安装了一个脚本后,我有一个错误:
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
相同的脚本正在另一台主机中运行.