"вызов функции undefined function" при вызове метода класса
это ошибка 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!";}
};
}
}
Ответы
Ответ 1
У вас нет функции с именем assign()
, но метод с этим именем. PHP - это не Java, а в PHP вам нужно четко, если вы хотите вызвать функцию
assign()
или метод
$object->assign()
В вашем случае вызов функции находится внутри другого метода. $this
всегда ссылается на объект, в котором существует метод.
$this->assign()
Ответ 2
вам нужно вызвать функцию, подобную этой
$this->assign()
вместо assign()
Ответ 3
Сопряжение,
Я наткнулся на эту ошибку сегодня, тестируя простой script. Я не использую функцию "класса", хотя и беру ее с солью.
Я вызывал функцию до ее определения и объявления... что-то вроде этого
try{
foo();
}
catch (exception $e)
{
echo "$e->getMessage()";
}
function foo(){
echo "blah blah blah";
}
поэтому php выбрасывал мне ошибку "вызов функции undefined".
Этот вид кажется классической ошибкой программирования, но может помочь кому-то, кто нуждается в подсказке.