diff options
| author | xue <> | 2006-09-23 01:51:57 +0000 | 
|---|---|---|
| committer | xue <> | 2006-09-23 01:51:57 +0000 | 
| commit | a5467e842316daf6a8a4345740f05a9731167ce1 (patch) | |
| tree | 0a982dd52df5c682fd2de8f9b22137471cee2dbe /framework/3rdParty/PhpShell/PHP/Shell/Extensions.php | |
| parent | 9af56fd93ed071d86f14296cec618073f6c0941a (diff) | |
merge from 3.0 branch till 1435.
Diffstat (limited to 'framework/3rdParty/PhpShell/PHP/Shell/Extensions.php')
| -rw-r--r-- | framework/3rdParty/PhpShell/PHP/Shell/Extensions.php | 86 | 
1 files changed, 86 insertions, 0 deletions
diff --git a/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php b/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php new file mode 100644 index 00000000..9b210c47 --- /dev/null +++ b/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php @@ -0,0 +1,86 @@ +<?php + +/** +* the interface for all shell extensions  +* +* Extension can hook into the execution of the shell +* +* examples: +* - execution time for parsing and execute +* - colours for the output +* - inline help +* +*   +*/ +interface PHP_Shell_Extension { +    public function register(); +} + +/** +* storage class for Shell Extensions +* +*  +*/ +class PHP_Shell_Extensions { +    /** +    * @var PHP_Shell_Extensions +    */ +    static protected $instance; + +    /** +    * storage for the extension +    * +    * @var array +    */ +    protected $exts = array(); + +    /** +    * the extension object gives access to the register objects +    * through the a simple $exts->name->... +    * +    * @param string registered name of the extension  +    * @return PHP_Shell_Extension object handle +    */ +    public function __get($key) { +        if (!isset($this->exts[$key])) { +            throw new Exception("Extension $s is not known."); +        } +        return $this->exts[$key]; +    } + +    /** +    * register set of extensions +    * +    * @param array set of (name, class-name) pairs +    */ +    public function registerExtensions($exts) { +        foreach ($exts as $k => $v) { +            $this->registerExtension($k, $v); +        } +    } + +    /** +    * register a single extension +    * +    * @param string name of the registered extension +    * @param PHP_Shell_Extension the extension object +    */ +    public function registerExtension($k, PHP_Shell_Extension $obj) { +        $obj->register(); + +        $this->exts[$k] = $obj; +    } + +    /** +    * @return object a singleton of the class  +    */ +    static function getInstance() { +        if (is_null(self::$instance)) { +            $class = __CLASS__; +            self::$instance = new $class(); +        } +        return self::$instance; +    } +} + +  | 
