调用类方法时调用“未定义的函数”错误

这是错误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!";} }; } } 

你没有一个名为assign()的函数,但是有一个这个名字的方法。 PHP不是Java,而是PHP,如果你想调用一个函数,你必须明确

 assign() 

或方法

 $object->assign() 

在你的情况下,函数的调用驻留在另一个方法。 $this总是指方法存在的对象本身。

 $this->assign() 

你需要像这样调用函数

 $this->assign() 

而不是只assign()

配合,

今天我在testing一个简单的脚本时偶然发现了这个错误。 尽pipe如此,我并没有使用“class级”function。 我在定义和声明之前调用了函数…就像这样

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

所以PHP是扔我错误“调用未定义的函数”。

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