Tipps zu nCurses unter PHP

Wie ich schon einmal geschrieben habe, arbeite ich derzeit ein wenig mit nCurses und PHP um mir ein kleines objektorientiertes Framework zu entwickeln. Hier mal ein paar Tipps für alle, die nCurses unter PHP verwenden.

Init nCurses via a Class

Das Problem bei nCurses: Es muss, bevor das PHP-Script gestoppt wird, explizit mit ncurses_end() beendet werden da sonst der Terminal nicht mehr zu gebrauchen ist. Ich habe hierfür eine kleine Klasse gebaut, die diese Aufgabe automatisch im Destructor (1) ausführt.

Der Vorteil: Egal wo das Script abgebrochen wird, und somit das Objekt nicht mehr benötigt (referenziert) wird, wird nCurses sauber beendet, da PHP den Destruktor des Objektes aufruft.

Hier eine Beispielklasse:

<?php
/*
*  Autor: Dominic Derdau
*  Contact: erasel.net
*  Date: 02/01/2011
*  License: GPL
*  Version: 1.0.1
*
*  A class for nCurses under PHP. Written in Singletone Pattern.
*
*  Changelog:
*  23/02/2011 - Dominic Derdau - Codereview, Version 1.0.1 reached
*  02/01/2011 - Dominic Derdau - Dev. started
*/
final class Curses {
    private static $instance = NULL;
    
    private function __construct() {
        // init ncurses
        ncurses_init();
    }
    
    public function __destruct() {
    // stop ncurses
    ncurses_end();
    }
    
    // get the instance from this class
    public static function getInstance() {
        if (self::$instance === NULL) {
            self::$instance = new self;
        }
        return self::$instance;
    }
    
    // disalow cloning from outside the class
    private function __clone() {}
}
?>

Nachdem die Klasse eingebunden wurde, muss sie nur noch initialisiert werden, um nCurses zu starten.

<?php
    $curses = Curses::getInstance();
?>

Die Klasse kann natürlich beliebig erweitert werden um weitere Aufgaben zu automatisieren.

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.