summaryrefslogtreecommitdiff
path: root/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php
diff options
context:
space:
mode:
authorxue <>2006-09-23 01:51:57 +0000
committerxue <>2006-09-23 01:51:57 +0000
commita5467e842316daf6a8a4345740f05a9731167ce1 (patch)
tree0a982dd52df5c682fd2de8f9b22137471cee2dbe /framework/3rdParty/PhpShell/PHP/Shell/Extensions.php
parent9af56fd93ed071d86f14296cec618073f6c0941a (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.php86
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;
+ }
+}
+
+