Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] eval i tablica
Maxik
post
Post #1





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Postanowiłem zmienić system komend na taki oparty o tablicę. Wygląda to tak:
  1. <?php
  2. private $slashcmds = array(
  3. 'items' => array('info'=>'Lista rzeczy.', 'code'=>"$this->put('Lista itemów.', 'info');"),
  4. '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');"),
  5. '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'); }"),
  6. 'quit' => array('info'=>'Zamyka konsolę', 'code'=>"$this->put('Do zobaczenia!', 'important');"),
  7. 'print_r' => array('info'=>'Wyświetla oczekujące wpisy', 'code'=>"echo '<PRE>'; print_r($_SESSION); echo '</PRE>';"),
  8. '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'); }")
  9. );
  10. ?>


A funkcja przetwarzająca to:
  1. <?php
  2. public function parse_cmd_from_array($command){
  3.        $this->put($command, 'command');
  4.        if($command[0]=='/' and array_key_exists(substr($command, 1), $this->slashcmds)){
  5.            eval($this->slashcmds[substr($command, 1)]['code']);
  6.        } else{
  7.           $this->put('Polecenie nie zostało rozpoznane', 'error');                        
  8.        }
  9.        $this->ajax_check();
  10.    }
  11. ?>


Pewnie to jakiś głupi błąd, ale ja go nie widzę. Proszę o pomoc.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 07:37