gpt4 book ai didi

php - 检查函数是否仅在子类上定义

转载 作者:行者123 更新时间:2023-12-02 00:58:11 25 4
gpt4 key购买 nike

 <?php 
class controller
{
public function view()
{
echo "this is controller->view";
}

}
class home extends controller
{
public function index()
{
echo "this is home->index";
}
function page()
{
echo "this is home-> page";
}

}


$obj= new home;

$method="index";// set to view or page
if(method_exists($obj,$method))
{
$obj->{$method}();
}

?>

我的问题:
如果我们将 $method 设置为 view,将调用基 Controller 类的 view()。
我想检查 $method 是否只存在于家庭类(不想检查函数是否在基类中定义)
知道如何实现这一点吗?

最佳答案

将基类函数定义为私有(private)。

改变

public  function view()
{
echo "this is controller->view";
}

private  function view()
{
echo "this is controller->view";
}

这将是工作...

编辑

function parent_method_exists($object,$method)
{
foreach(class_parents($object) as $parent)
{
if(method_exists($parent,$method))
{
return true;
}
}
return false;
}

if(!(method_exists($obj,$method) && parent_method_exists($obj,$method)))
{
$obj->{$method}();
}

这将在您的情况下完美工作...

另请参阅 this link

关于php - 检查函数是否仅在子类上定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com