![](/img/trans.png)
[英]PHP, Fatal error: Call to undefined method calling function from another class
[英]“call to undefined function” error when calling class method
這是錯誤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()
配合,
我在測試一個簡單的腳本時偶然發現了這個錯誤。 我沒有使用“類”功能,所以它采取了一粒鹽。 我在定義和聲明之前調用函數......就像這樣
try{
foo();
}
catch (exception $e)
{
echo "$e->getMessage()";
}
function foo(){
echo "blah blah blah";
}
所以PHP給我錯誤“調用未定義的函數”。
這有點似乎是經典的編程錯誤,但可能會幫助需要線索的人。
您可以做的另一個愚蠢的錯誤是將遞歸函數從非類環境復制到類,並且不要將內部自我調用更改為$ this-> method_name()
我寫這個是因為無法理解為什么我收到這個錯誤,當你搜索這個錯誤時,這個帖子在google中是第一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.