如何在PHP中的if语句中使用成员函数

如何在PHP中的if语句中使用成员函数,php,class,Php,Class,如果我有一个名为name() 但是对于这样一个类: $miniaturas = new miniaturas(); $miniaturas->thumb($db); 如果我尝试: if (thumb($miniaturas->thumb($db))) { } 或者这个: if (thumb($db)) {} 我得到: 致命错误:调用未定义的函数thumb() 我如何在类中调用这个函数,就像在类外调用函数一样?这只是如果($minitaturas->thumb($db)){…}。

如果我有一个名为
name()

但是对于这样一个类:

$miniaturas = new miniaturas();
$miniaturas->thumb($db);
如果我尝试:

if (thumb($miniaturas->thumb($db))) { }
或者这个:

if (thumb($db)) {}
我得到:

致命错误:调用未定义的函数thumb()

我如何在类中调用这个函数,就像在类外调用函数一样?

这只是
如果($minitaturas->thumb($db)){…}
。这是因为您将
thumb()
定义为类
minitaturas
的成员函数,并且因为它是该类的成员,所以它不是全局命名空间的成员

if (thumb($miniaturas->thumb($db))) {}
除非您确实有一个名为
thumb
的函数

if ($miniaturas->thumb($db)) {}
thumb的额外函数调用正在中断

尝试以下操作:

if(function_exists("$miniaturas->thumb"))
函数\u exists()
函数用于确定函数是否存在:

if (function_exists('thumb')){
  //...
}

除了Neal的评论外,我还使用以下php内置函数检查方法/函数是否存在:

  • 函数_exists:我使用这个函数来查看是否存在普通函数

    如果(函数_存在('thumb')){ 拇指(db); }

  • 方法_存在:如果我必须检查对象的“方法”,我更喜欢使用该方法

    $miniaturas=新的miniaturas()

    如果(方法_存在($minimaturas,'thumb')){ $miniaturas->thumb($db); }

  • 除此之外,您还可以使用is_callable,它检查函数/方法是否可调用。。。看看

    我想你想要 如果($minimaturas->thumb($db)){ //代码 }
    方法thumb应该返回一个布尔值

    为什么需要fn(fn())?试试看($miniaturas->thumb($db)){}在这种情况下,我需要删除$miniaturas->thumb($db);在if之前执行($minitaturas->thumb($db)),否则我会得到一个mysqli错误。但是现在起作用了我不确定我是否明白你的意思,但是很高兴你明白了。对不起,我想说,如果我使用if($miniaturas->thumb($db)){},我必须在if之前删除($miniaturas->thumb($db)),否则我会给出一个错误什么错误?在
    if
    语句中调用类函数是完全合法的。警告:mysqli::prepare()[mysqli.prepare]:无法获取mysqli,致命错误:对中的非对象调用成员函数bind_param()——仅当我执行$miniaturas->thumb($db)时才会发生如果方法_存在,请再次检查方法是否存在,而不是返回值,对吗?绝对正确。。。它只是检查方法是否存在于给定的类(method_exists('ClassName','methodName'))或对象(method_exists($object,'methodName'))上。最后一个方法对于某种类型的“duck类型”特别有用。。。检查对象的现有方法。但是没有调用任何方法。调用函数有多种方法。。。但这是另一个话题:-)