wake-up-neo.net

"Aufruf an undefinierte Funktion" Fehler beim Aufruf der Klassenmethode

dies ist der Fehler Fatal error: Call to undefined function assign(
Dies ist der Code. Wie Sie sehen können, habe ich die Funktion offensichtlich definiert. Warum funktioniert sie nicht?

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!";}
        };  
    }
}
42
Tommy Arnold

Sie haben keine Funktion namens assign(), sondern eine Methode mit diesem Namen. PHP ist kein Java und in PHP müssen Sie deutlich machen, ob Sie eine Funktion aufrufen möchten

assign()

oder eine Methode

$object->assign()

In Ihrem Fall befindet sich der Aufruf der Funktion in einer anderen Methode. $this bezieht sich immer auf das Objekt, in dem sich eine Methode selbst befindet.

$this->assign()
89
KingCrunch

sie müssen die Funktion so aufrufen

$this->assign()

statt nur assign()

14
Nanne

Kameraden,

Ich bin heute beim Testen eines einfachen Skripts auf diesen Fehler gestoßen. Ich benutze zwar nicht die "Klassen" -Funktion, also nehme ich es mit dem Salzkorn . Ich habe die Funktion vor der Definition und Deklaration aufgerufen ... so etwas

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

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

also warf mir php Fehler "Aufruf an undefinierte Funktion". 

Dies scheint ein klassischer Programmierfehler zu sein, kann jedoch jemandem helfen, der Anhaltspunkte benötigt. 

3
Vishal

Ein weiterer dummer Fehler, den Sie tun können, ist das Kopieren einer rekursiven Funktion von einer Umgebung außerhalb einer Klasse in eine Klasse.

ich schreibe das, weil ich nicht verstehen konnte, warum ich diesen Fehler bekam. Dieser Thread ist der erste in Google, wenn Sie nach diesem Fehler suchen.

0
Edgars Aivars