2010-03-25 1 views
5

Ich bekomme diesen Fehler für die erneute Deklaration saveorder(), aber ich glaube nicht, dass ich?!?Kann saveorder() (zuvor in: 10) in der Zeile 71 nicht redeclared

Kann nicht neu deklarieren saveorder() (zuvor in deklariert: 10) auf der Leitung 71

8.function saveOrder() 
9.{ 
10. include 'tables.php'; 
11. $orderId  = 0; 
12. $shippingCost = 5; 

...

68. } 
69. echo $orderId; 
70. return $orderId; 
71. } 

Antwort

10

Sie könnten die Datei einschließlich des Jahres, die Funktion mehr als einmal enthält:

include 'file.php'; 
    include 'file2.php'; 

file.php:

include 'file2.php'; 

Cannot redeclare saveorder() (previously declared in :10) on line 71

Entweder verwenden include_once oder require_once sicher zu machen, passiert nicht (dies kann zu Problemen führen, wenn Sie versuchen, es zweimal an zwei verschiedenen Stellen einzufügen (wie zum Beispiel in einer Datei) , dann später innerhalb einer Funktion aus irgendeinem Grund, der zweite wird nicht funktionieren, wenn Sie den _once Teil einschließen).

1

Entweder tables.php eine Funktion enthält auch saveOrder() aufgerufen, oder Die von Ihnen gepostete Datei ist tatsächlich tables.php. PHP kann nicht 2 Funktionen mit demselben Namen im selben Namespace haben.

+0

Wenn ich Zeile 10 auskommentiere, verschiebt es einfach den Fehler in Zeile 11? – Tom

4

Sie müssen die aktuelle Datei (aus der die Zeilen stammen) mehrmals einschließen.

Eine einfache Lösung wird mit

if (!function_exists('saveOrder')) { 
    function saveOrder() {...} 
} 

Allerdings empfehle ich eine neue functions.php-Datei erstellen, in nur einmal mit, und alle Funktionen dort platzieren.

1

dies könnte auch verursacht werden saveorder() innerhalb einer anderen Funktion delcared, die mehrmals aufgerufen wird.

z.

function func1() 
{ 
    function saveorder() 
    { 
     echo 'x'; 
    } 
    saveorder(); 
} 

for ($i=0;$i<2;++$i) 
    func1(); 
+0

Das war der Fall für mich. – claytronicon

1

Ich denke, das da ein Fehler in PHP sein muß, wo Sie haben „: 10“ ich alle Arten von seltsamen Symbolen erhalten, die nicht überall in meinem Code auftreten - dh. Einmal könnte es sein ": 0", nächstes Mal ": 196870" und das nächste Mal "! qhsu89s3". Ich finde auch, dass wenn ich vor dem Auffrischen etwas warte, es sich normalerweise selbst aussortiert.

Nicht zu ermutigend muss ich sagen, aber ich vermute ein Problem mit PHP unter Windows.

Verwandte Themen