php-调用类方法时出现“调用未定义函数”错误

这是错误Fatal error: Call to undefined function assign(
这是代码,如您所见,我显然已经定义了该函数,所以为什么它不起作用

class shades {
    function create($name, $shades, $slug, $shortDesc, $longDesc, $position){
        $name = sanitize_paranoid_string($name);
        $slug = slug($name);
        $shortDesc = sanitize_sql_string($shortDesc);
        $longDesc = sanitize_sql_string($longDesc);
        $query = mysql_query("INSERT INTO products (type, name, slug, shortDesc, htmlDesc, position)VALUES('shades','$name','$slug','$shortDesc','$longDesc','$position')")or die(mysql_error());  
        $ID = mysql_insert_id();
        assign($shades, $ID);
        if($query) {return true;}
        else {return false;};
    }
    function delassign($toID){
        mysql_query("DELETE FROM assign WHERE type='shades' AND toID='$toID'")or die(mysql_error());    
    }
    function assign($shades, $toID)
    {
        foreach($shades as $shade)
        {
            $result = mysql_query("INSERT INTO assign(type, typeID, toID)VALUES('shades','$shade','$toID')")or die(mysql_error());
            if($result){echo "Added!";}
            else{echo"Not Added!";}
        };  
    }
}
Tommy Arnold asked 2020-07-31T02:13:08Z
4个解决方案
95 votes

您没有名为$this的函数,而是具有此名称的方法。 PHP不是Java,在PHP中,如果要调用函数,则必须弄清楚

assign()

或方法

$object->assign()

在您的情况下,对该函数的调用位于另一个方法中。 $this始终是指本身存在方法的对象。

$this->assign()
KingCrunch answered 2020-07-31T02:13:39Z
15 votes

您需要像这样调用函数

$this->assign()

而不是assign()

Nanne answered 2020-07-31T02:14:03Z
4 votes

伙伴,

我今天在测试一个简单的脚本时偶然发现了这个错误。 我没有使用“类”功能,所以它有点含盐。我在定义和声明之前调用过函数...类似这样的东西

      try{
             foo();
         }
       catch (exception $e)
           {
            echo "$e->getMessage()";
           }

       function foo(){
                       echo "blah blah blah";
                     }

因此,PHP抛出了错误“调用未定义的函数”。

这似乎是经典的编程错误,但可能会帮助需要线索的人。

Vishal answered 2020-07-31T02:14:36Z
0 votes

您可以做的另一个愚蠢的错误是将递归函数从非类环境复制到类,并且不要将内部自调用更改为$ this-> method_name()

我正在写这篇文章,因为无法理解为什么我会收到此错误,并且当您搜索此错误时,该线程在google中是第一个。

Edgars Aivars answered 2020-07-31T02:15:01Z
translate from https://stackoverflow.com:/questions/4809702/call-to-undefined-function-error-when-calling-class-method