我include了一个文件,里面已经包含了一个对象$obj,现在要为这个对象增加一个方法,可行吗?比如在a.php文件中代码是这样:class P
{
function sub($a, $b)
{
return $a-$b;
}
}$obj = new P();在b.php文件中是这样,
include("a.php");要为$obj对象增加一个加法功能,以便在b.php中进行加法运算,如:
$sum = $obj->add(3,67);
但是不能对a.php中的类P进行修改,有什么办法吗?
{
function sub($a, $b)
{
return $a-$b;
}
}$obj = new P();在b.php文件中是这样,
include("a.php");要为$obj对象增加一个加法功能,以便在b.php中进行加法运算,如:
$sum = $obj->add(3,67);
但是不能对a.php中的类P进行修改,有什么办法吗?
include("a.php");
class B extends P
{
function add($a, $b)
{
return $a+$b;
}
}
$obj = new B();
$sum = $obj->add(3,67);
{
}
报语法错误,而且也不能对文件a.php进行修改。其实是使用adodb时没有GetList功能,我想为adodb增加一个GetList功能,可以在adodb源码中加代码实现,只是不想对adodb进行任何修改,因为以后可能要用adodb新版本,修改源代码后每次升级都要再改源代码。
class P
{
function sub($a, $b)
{
return $a-$b;
}
}
$obj = new P;$cls = get_class($obj);$temp = <<< TPL
class FixedClass extends $cls {
function add(\$a, \$b)
{
return \$a+\$b;
}
}
TPL;
eval("$temp");$p = new FixedClass;print_r(get_class_methods($p));
class Example {
function foo() {
echo "foo!\n";
}
}// create an Example object
$e = new Example();// Add a new public method
classkit_method_add(
get_class($e);,
'add',
'$num1, $num2',
'return $num1 + $num2;',
CLASSKIT_ACC_PUBLIC
);// add 12 + 4
echo $e->add(12, 4);需要安装相关的classkit pecl扩展