PHP对象新增方法的问题
很普通的写法:
class MyClass
{
funciton a(){
echo 'a';
}
}
class MyClassExted extends MyClass
{
function b(){
echo 'b';
}
}
$test = new MyClassExted();
$test->b();
因为一些原因,我希望使用的时候可以是这样的:
$test = new MyClass();
$test->b();
就“好像”是这样:
class MyClass
{
funciton a(){
echo 'a';
}
}
class MyClass extends MyClass
{
function b(){
echo 'b';
}
}
$test = new MyClass();
$test->b();
但这显示不对的,新extends的类名必须与父类不同,那么问题来了?
有什么办法可以直接对一个类新增一个方法吗?
------解决思路----------------------
没有这种写法,类名不能重复定义
为什么不在MyClass类里面写方法b() 呢,MyClassExted?继承 MyClass后,可以重写MyClass 的方法b()
class MyClass
{
function a(){
echo 'a';
}
function b(){
echo 'MyClass b';
}
}
class MyClassExtend extends MyClass
{
function b(){
echo 'MyClassExtend b';
}
}
$MyClass = new MyClass();
$MyClass->b();//MyClass b
$MyClassExtend = new MyClassExtend();
$MyClassExtend->b();//MyClassExtend b
------解决思路----------------------
你可以给类预留一个接口呀
class MyClass
{
funciton a(){
echo 'a';
}
function __call($name, $param) {
if(function_exists($name)) {
return call_user_func_array($name, $param);
}
}
}
function b() {
echo $b;
}
$test = new MyClass();
$test->b();
------解决思路----------------------
class MyClass
{
function a(){
echo 'a';
}
function __call($name, $param){
if($name=='b'){
echo 'b';
}
}
}
$obj = new MyClass();
$obj->b();
------解决思路----------------------
再给你个加强升级版