Postanowiłem zmienić system komend na taki oparty o tablicę. Wygląda to tak:
<?php
private $slashcmds = array( 'items' => array('info'=>'Lista rzeczy.', 'code'=>"$this->put('Lista itemów.', 'info');"), 'clear' => array('info'=>'Czyści ekran', 'code'=>"$this->clear(); $this->put('Maxiks Console', 'important'); $this->put('Wersja '.$this->version, 'info'); $this->put('Wpisz komendę...', 'info'); $this->put('Lista komend: wpisz help lub /help', 'info');"), 'help' => array('info'=>'Wyświetla ten ekran pomocy', 'code'=>"$this->put('Lista dostępnych komend:', 'info'); foreach($this->slashcmds as $name => $deeper_arr){ $this->put('/'.$name.' - '.$deeper['info'], 'info'); }"), 'quit' => array('info'=>'Zamyka konsolę', 'code'=>"$this->put('Do zobaczenia!', 'important');"), 'print_r' => array('info'=>'Wyświetla oczekujące wpisy', 'code'=>"echo '<PRE>'; print_r($_SESSION); echo '</PRE>';"), 'debug' => array('info'=>'Sprawdza poprawność działania konsoli', 'code'=>"$this->put('Debugger', 'important'); $this->put('Test', 'info'); $this->put(session_id(), 'important'); echo '<PRE>'; print_r($_SESSION); echo '</PRE>'; if($_COOKIE['PHPSESSID']==session_id()){ $this->put('Ciastko OK!', 'info'); } else{ $this->put('Ciastko złe', 'error'); }") );
?>
A funkcja przetwarzająca to:
<?php
public function parse_cmd_from_array($command){
$this->put($command, 'command');
eval($this->slashcmds[substr($command, 1)]['code']); } else{
$this->put('Polecenie nie zostało rozpoznane', 'error');
}
$this->ajax_check();
}
?>
Pewnie to jakiś głupi błąd, ale ja go nie widzę. Proszę o pomoc.