Ошибка «вызова неопределенной функции» при вызове метода класса - PullRequest
43 голосов
/ 26 января 2011

это ошибка 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!";}
        };  
    }
}

Ответы [ 4 ]

92 голосов
/ 26 января 2011

У вас нет функции с именем assign(), но есть метод с этим именем. PHP не Java, и в PHP вы должны уточнить, если вы хотите вызвать функцию

assign()

или метод

$object->assign()

В вашем случае вызов функции находится внутри другого метода. $this всегда ссылается на сам объект, в котором существует метод.

$this->assign()
14 голосов
/ 26 января 2011

вам нужно вызвать такую ​​функцию

$this->assign()

вместо просто assign()

3 голосов
/ 22 апреля 2014

Mates,

Я наткнулся на эту ошибку сегодня, когда тестировал простой скрипт.Я не использую функцию "класс", хотя, так что это взять с зерном соли.Я вызывал функцию перед ее определением и объявлением ... что-то вроде

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

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

, поэтому php выдавал мне ошибку "вызов неопределенной функции".

Это вроде классическая ошибка программирования, но может помочь кому-то, кто нуждается в подсказке.

0 голосов
/ 06 февраля 2018

Еще одна глупая ошибка, которую вы можете сделать, это скопировать рекурсивную функцию из неклассической среды в класс и не изменять внутренние вызовы self на $ this-> method_name ()

Я пишу это, потому что не смогпонять, почему я получил эту ошибку, и эта тема является первой в Google при поиске этой ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...