public static function register($abstract, $concrete = NULL)
    {
        if ($concrete == NULL) {
            $instance = self::getInstance($abstract);
            self::singleton($instance);
        } else {
            $instance = self::getInstance($concrete);
            self::singleton($instance, $abstract);
        }
    }
public static function register($abstract, $concrete = NULL)
    {
        if ($concrete == NULL) {
            $instance = self::getInstance($abstract);
            self::singleton($instance);
        } else {
            $instance = self::getInstance($concrete);
            self::singleton($instance, $abstract);
        }
    }
public static function register ( $ abstract , $ concrete = NULL ) { if ( $ concrete == NULL ) { $ instance = self :: getInstance ( $ abstract ) ; self :: singleton ( $ instance ) ; } else { $ instance = self :: getInstance ( $ concrete ) ; self :: singleton ( $ instance , $ abstract ) ; } }
register class, instantiate class, set instance to singleton.

@param  string $abstract abstract class name
@param  string $concrete concrete class name, if NULL, use abstract class name
@return void
register class instantiate class set instance to singleton .