static function init() {

		switch( PHP_SAPI ) {
		// Ideally we want to be runnning as CLI
		case 'cli':
			break;
		// Special conditions to ensure CGI runs as CLI
		case 'cgi':
			// Ensure resource constants are defined
			if( ! defined('STDERR') ){
				define( 'STDERR', fopen('php://stderr', 'w') );
			}
			if( ! defined('STDOUT') ){
				define( 'STDOUT', fopen('php://stdout', 'w') );
			}
			break;
		default:
			echo "Command line only\n";
			exit(1);
		}
		
		// Default error logger function
		PLUG::set_error_logger( array(__CLASS__,'format_logline') );
		
		// parse command line arguments from argv global
		global $argv, $argc;
		// first cli arg is always current script. second arg will be script arg passed to shell wrapper
		for( $i = 1; $i < $argc; $i++ ){
			$arg = $argv[ $i ];
			
			// Each command line argument may take following forms:
			//  1. "Any single argument", no point parsing this unless it follows #2 below
			//  2. "-aBCD", one or more switches, parse into 'a'=>true, 'B'=>true, and so on
			//  3. "-a value", flag used with following value, parsed to 'a'=>'value'
			//  4. "--longoption", GNU style long option, parse into 'longoption'=>true
			//  5. "--longoption=value", as above, but parse into 'longoption'=>'value'
			//  6."any variable name = any value" 
			
			$pair = explode( '=', $arg, 2 );
			if( isset($pair[1]) ){
				$name = trim( $pair[0] );
				if( strpos($name,'--') === 0 ){
					// #5. trimming "--" from option, tough luck if you only used one "-"
					$name = trim( $name, '-' );
				}
				// else is #6, any pair
				$name and self::$args[$name] = trim( $pair[1] );
			}
			
			else if( strpos($arg,'--') === 0 ){
				// #4. long option, no value
				$name = trim( $arg, "-\n\r\t " );
				$name and self::$args[ $name ] = true;
			}
			
			else if( $arg && $arg{0} === '-' ){
				$flags = preg_split('//', trim($arg,"-\n\r\t "), -1, PREG_SPLIT_NO_EMPTY );
				foreach( $flags as $flag ){
					self::$args[ $flag ] = true;
				}
				// leave $flag set incase a value follows.
				continue;
			}

			// else is a standard argument. use as value only if it follows a flag, e.g "-a apple"
			else if( isset($flag) ){
				self::$args[ $flag ] = trim( $arg );
			}

			// dispose of last flag
			unset( $flag );
			// next arg 
		}
	}
static function init() {

		switch( PHP_SAPI ) {
		// Ideally we want to be runnning as CLI
		case 'cli':
			break;
		// Special conditions to ensure CGI runs as CLI
		case 'cgi':
			// Ensure resource constants are defined
			if( ! defined('STDERR') ){
				define( 'STDERR', fopen('php://stderr', 'w') );
			}
			if( ! defined('STDOUT') ){
				define( 'STDOUT', fopen('php://stdout', 'w') );
			}
			break;
		default:
			echo "Command line only\n";
			exit(1);
		}
		
		// Default error logger function
		PLUG::set_error_logger( array(__CLASS__,'format_logline') );
		
		// parse command line arguments from argv global
		global $argv, $argc;
		// first cli arg is always current script. second arg will be script arg passed to shell wrapper
		for( $i = 1; $i < $argc; $i++ ){
			$arg = $argv[ $i ];
			
			// Each command line argument may take following forms:
			//  1. "Any single argument", no point parsing this unless it follows #2 below
			//  2. "-aBCD", one or more switches, parse into 'a'=>true, 'B'=>true, and so on
			//  3. "-a value", flag used with following value, parsed to 'a'=>'value'
			//  4. "--longoption", GNU style long option, parse into 'longoption'=>true
			//  5. "--longoption=value", as above, but parse into 'longoption'=>'value'
			//  6."any variable name = any value" 
			
			$pair = explode( '=', $arg, 2 );
			if( isset($pair[1]) ){
				$name = trim( $pair[0] );
				if( strpos($name,'--') === 0 ){
					// #5. trimming "--" from option, tough luck if you only used one "-"
					$name = trim( $name, '-' );
				}
				// else is #6, any pair
				$name and self::$args[$name] = trim( $pair[1] );
			}
			
			else if( strpos($arg,'--') === 0 ){
				// #4. long option, no value
				$name = trim( $arg, "-\n\r\t " );
				$name and self::$args[ $name ] = true;
			}
			
			else if( $arg && $arg{0} === '-' ){
				$flags = preg_split('//', trim($arg,"-\n\r\t "), -1, PREG_SPLIT_NO_EMPTY );
				foreach( $flags as $flag ){
					self::$args[ $flag ] = true;
				}
				// leave $flag set incase a value follows.
				continue;
			}

			// else is a standard argument. use as value only if it follows a flag, e.g "-a apple"
			else if( isset($flag) ){
				self::$args[ $flag ] = trim( $arg );
			}

			// dispose of last flag
			unset( $flag );
			// next arg 
		}
	}
static function init ( ) { switch ( PHP_SAPI ) { // Ideally we want to be runnning as CLI case 'cli' : break ; // Special conditions to ensure CGI runs as CLI case 'cgi' : // Ensure resource constants are defined if ( ! defined ( 'STDERR' ) ) { define ( 'STDERR' , fopen ( 'php://stderr' , 'w' ) ) ; } if ( ! defined ( 'STDOUT' ) ) { define ( 'STDOUT' , fopen ( 'php://stdout' , 'w' ) ) ; } break ; default : echo "Command line only\n" ; exit ( 1 ) ; } // Default error logger function PLUG :: set_error_logger ( array ( __CLASS__ , 'format_logline' ) ) ; // parse command line arguments from argv global global $ argv , $ argc ; // first cli arg is always current script. second arg will be script arg passed to shell wrapper for ( $ i = 1 ; $ i < $ argc ; $ i ++ ) { $ arg = $ argv [ $ i ] ; // Each command line argument may take following forms: //  1. "Any single argument", no point parsing this unless it follows #2 below //  2. "-aBCD", one or more switches, parse into 'a'=>true, 'B'=>true, and so on //  3. "-a value", flag used with following value, parsed to 'a'=>'value' //  4. "--longoption", GNU style long option, parse into 'longoption'=>true //  5. "--longoption=value", as above, but parse into 'longoption'=>'value' //  6."any variable name = any value"  $ pair = explode ( '=' , $ arg , 2 ) ; if ( isset ( $ pair [ 1 ] ) ) { $ name = trim ( $ pair [ 0 ] ) ; if ( strpos ( $ name , '--' ) === 0 ) { // #5. trimming "--" from option, tough luck if you only used one "-" $ name = trim ( $ name , '-' ) ; } // else is #6, any pair $ name and self :: $ args [ $ name ] = trim ( $ pair [ 1 ] ) ; } else if ( strpos ( $ arg , '--' ) === 0 ) { // #4. long option, no value $ name = trim ( $ arg , "-\n\r\t " ) ; $ name and self :: $ args [ $ name ] = true ; } else if ( $ arg && $ arg { 0 } === '-' ) { $ flags = preg_split ( '//' , trim ( $ arg , "-\n\r\t " ) , - 1 , PREG_SPLIT_NO_EMPTY ) ; foreach ( $ flags as $ flag ) { self :: $ args [ $ flag ] = true ; } // leave $flag set incase a value follows. continue ; } // else is a standard argument. use as value only if it follows a flag, e.g "-a apple" else if ( isset ( $ flag ) ) { self :: $ args [ $ flag ] = trim ( $ arg ) ; } // dispose of last flag unset ( $ flag ) ; // next arg  } }
Initialize PLUG CLI environment
@todo research CGI environment, differences to cli
@return Void
Initialize PLUG CLI environment