Fehlermeldung "Fatal error: Cannot redeclare"
Enrico
- php
Hallo,
ich habe in der php-Datei "Standard.php" mehrere Funktionen definiert.
Hier (auszugsweise) der Inhalt der Datei:
<?php
function bin2hex($t)
{
$r="";
for($i=0,$j=strlen($t);$i<$j;$i++)
$r.=sprintf("%02x",ord($t{$i}));
return $r;
}
function hex2bin($t)
{
$r="";
for($i=0,$j=strlen($t);$i<$j;$i+=2)
$r.=chr(hexdec($t{$i}.$t{($i+1)}));
return $r;
}
...
?>
Unverständlicherweise bekomme ich folgende Fehlermeldung angezeigt:
Fatal error: Cannot redeclare bin2hex() in Standard.php on line 9
Zeile 9 bezieht sich hierbei auf die schliessende geschweifte Klammer der Funktion bin2hex.
Die Funktion existiert nur ein einziges Mal und auch nur in dieser Datei.
Die einzige Möglichkeit, diese Fehlermeldung zu unterbinden, ist, die Funktion in folgende Abfrage einzuschliessen:
if(!function_exists("..."))
{
function bin2hex($t)
{
$r="";
for($i=0,$j=strlen($t);$i<$j;$i++)
$r.=sprintf("%02x",ord($t{$i}));
return $r;
}
}
Warum ist das so?
Bei allen nachfolgenden Funktionen habe ich diesen Fehler (?) nicht.
Die Abfrage macht zudem absolut keinen Sinn, da die Funktion vorher und nachher kein weiteres Mal vorkommt.
Danke für eure Hilfe.
Gruß
Enrico
Hi,
Fatal error: Cannot redeclare bin2hex() in Standard.php on line 9
MfG ChrisB
Hi ChrisB,
Der von Dir genannten Seite habe ich meine Funktion entnommen:
http://www.php.net/manual/en/function.bin2hex.php#90408
Gruß
Enrico
Tach!
Der von Dir genannten Seite habe ich meine Funktion entnommen:
http://www.php.net/manual/en/function.bin2hex.php#90408
Das macht die in PHP enthaltene Funktion gleichen Namens nicht ungeschehen oder überschreibbar.
dedlfix.
*boing*
Dankesehr, das lag mehr als nur auf der Hand... ^^
Gruß
Enrico
Dankesehr, das lag mehr als nur auf der Hand... ^^
Tip:
In PHP enthaltene Funktionen haben prinzipiell nur kleine Buchstaben im Name. Wenn Du eigene Funktionen deklarierts gib diesen große Buchstaben im Name mit auf den Weg.
bin2hex -> Bin2Hex
und/oder verwende einen (geeigneten) Präset im Name
bin2hex -> FTX_bin2hex (Aber he! "FTX_" ist "mein" Präset!)
Tach!
In PHP enthaltene Funktionen haben prinzipiell nur kleine Buchstaben im Name. Wenn Du eigene Funktionen deklarierts gib diesen große Buchstaben im Name mit auf den Weg.
Die Funktionsnamen (ebenso wie Klassenname, aber anders als Variablennamen) sind in PHP groß-/kleinschreibungsunabhängig. Funktionen können auf diese Weise nicht überschrieben werden. Seit PHP 5.3 gibt es allerdings Namensräume.
dedlfix.
Tip Nr 2:
Von PHP (und Erweiterungen) enthaltene Konstanten haben prinzipiell nur große Buchstaben im Name. Wenn Du eigene Konstanten deklarierts gib diesen auch kleine Buchstaben im Name mit auf den Weg.
Beispiel:
E_ALL -> E_All (Warnung: Das konkrete Beispiel ist optisch kaum zu unterscheiden und wird häufig zu Fehlern führen!)
und/oder verwende einen (geeigneten) Präset im Name
E_ALL -> FTX_E_All (Aber he! "FTX_" bleibt "mein" Präset!)
[latex]Mae govannen![/latex]
Der von Dir genannten Seite habe ich meine Funktion entnommen:
http://www.php.net/manual/en/function.bin2hex.php#90408
http://www.php.net/manual/en/functions.user-defined.php 2. Absatz hinter Example 3
Stur lächeln und winken, Männer!
Kai
var jQuery = $(hit);