• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Object Funktionen und Funktionen

supertobs

Mitglied
Hallo,

Ich habe ein Problem mit einer Klasse, welche ich für mein aktuelles Projekt entworfen habe.
Die klasse ersetzt ganz einfach in einer HTML Datei bestimmte Platzhalter durch Konstanten.
Das habe ich bis jetzt folgendermaßen gelöst:
PHP:
final class tpl{
  private $content;
  
  public function __construct($file){
    if(is_file($file)) {
      $file_content = file_get_contents($file);
      $this->content = $file_content;
      
    } else {
      $this->content = false;
      
    }
    
  }
  
  public function replConst(){
    function evaluateConstant($placeholder){
            $string = $placeholder;
      
      
        if(defined($string)==true){
          $ret = constant($string);
          
        } else {$ret='{'.$placeholder.'}';} 
      
      return $ret;
    }
    
    $content = preg_replace('#\{CONS:(.*)\}#iUe','evaluateConstant("$1")',$this->content);
    $this->content = $content;
  }
  
  public function out(){
    return $this->content;
    
  }

}

und was für ein wunder ;) das ganze funktioniert auch... einmal.

Und zwar so:
PHP:
$head = new tpl(ABS_STYLE_DIR.'tpl/head.tpl');
$head->replConst();
echo $head->out();

Doch sobald ich versuche, mit einem zweiten Objekt die Objekt Funktion "replConst();" aufzurufen führt dies zu der Fehlermeldung, dass die funktion evaluateConstant() bereits deklariert ist.

was mache ich falsch?

Tobi
 
Werbung:
Du könntest das mit PHP: function_exists - Manual verhindern.

Etwa
PHP:
  public function replConst(){
    if(!function_exists('evaluateConstant')){
    function evaluateConstant($placeholder){
            $string = $placeholder;
      
      
        if(defined($string)==true){
          $ret = constant($string);
          
        } else {$ret='{'.$placeholder.'}';} 
      
      return $ret;
    }
    }

    // ...

  }
 
Werbung:
Zurück
Oben