[PHP] function_exists() unererwarteter Parser error ***erledigt***

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hi @all,

ich steh irgendwie auf dem Schlauch.

Ich will nach einer Class prüfen ob eine Funktion existiert oder nicht und dementsprechend handeln.

Jedoch erzeugt folgender Code:
PHP:
<?php
if(function_exist('foo') == FALSE)
   function foo()
   {
      return true;
   }
?>
diesen Fehler:
Parse error: syntax error, unexpected T_FUNCTION in /srv/www/web1/html/xxx/xxx/xxx.php on line 504


Wobei das eigentlich funktionieren sollte
Dann habe ich es in {} gesetzt und da kam das bei raus:
Fatal error: Cannot redeclare _quote_smart() (previously declared in /srv/www/web1/html/xxx/xxx/xxx.php:505) in /srv/www/web1/html/xxx/xx/xxx/xxxxx.php on line 22
kann mir das mal einer erklären?

Danke
 
Zuletzt bearbeitet:
Kann es sein, dass die Funktion nicht "function_exist" heißt, sondern "function_exists"?
Und das deshalb der fehler auftritt?

Weil mir spuckt PHP bei folgendem:

PHP:
if(function_exist('foo') == FALSE)
{
   function foo()
   {
      return true;
   }
 }

nen Fehler aus, dass function_exist nicht existiert.

und

PHP:
if(function_exists('foo') == FALSE)
{
   function foo()
   {
      return true;
   }
 }

gibt mir keinen Fehler aus.
 
ja sorry das s habe ich vergessen aber daran liegt es nicht in meinem Code ist das s dran.

probier mal folgendes:
PHP:
<?php
function foo()
{
    return true;
}
if(function_exists('foo'))
{
    function foo()
    {
        return true;
    }
}
?>
da kommt der Fehler:
Fatal error: Cannot redeclare foo() (previously declared in /srv/www/web1/html/xxx/xxx/xxx.php:497) in /srv/www/web1/html/xxx/xxx/xxx.php on line 501
das ist bei mir der Fall, und ich versteh nicht warum. Oder sollte man mit === prüfen? :think:

*EDIT
SORRY HATTE NEN DENKFEHLER DRIN ICH DENKE ES IST ERLEDIGT.
 
SORRY HATTE NEN DENKFEHLER DRIN ICH DENKE ES IST ERLEDIGT.
Um den Denkfehler nur noch mal für die Allgemeinheit aufzuzeigen:
function_exists() liefert true zurück, wenn die Funktion existiert, andernfalls false. In seinem Script hat er also überprüft ob die Funktion existiert und wenn dass der Fall ist, dann wollte er die Funktion (noch mal) deklarieren (das sagt ja auch die Fehlermeldung). Korrekt wäre also folgender Code gewesen:
PHP:
<?php
function foo()
{
    return true;
}
if(!function_exists('foo'))
{
    function foo()
    {
        return true;
    }
}
?>
(Man beachte das Ausrufezeichen in der If-Abfrage)