public static function get($options = null) {
		if( $options === null ) {
			/** @noinspection PhpIncompatibleReturnTypeInspection */
			return static::select();
		}
		if( $options instanceof SQLSelectRequest ) {
			$options->setSQLAdapter(static::getSQLAdapter());
			$options->setIDField(static::$IDFIELD);
			$options->from(static::$table);
			return $options->run();
		}
		if( is_string($options) ) {
			$args = func_get_args();
			$options = array();// Pointing argument
			foreach( array('where', 'orderby') as $i => $key ) {
				if( !isset($args[$i]) ) {
					break;
				}
				$options[$key] = $args[$i];
			}
		}
		$options['table'] = static::$table;
		// May be incompatible with old revisions (< R398)
		if( !isset($options['output']) ) {
			$options['output'] = SQLAdapter::ARR_OBJECTS;
		}
		//This method intercepts outputs of array of objects.
		$onlyOne = $objects = 0;
		if( in_array($options['output'], array(SQLAdapter::ARR_OBJECTS, SQLAdapter::OBJECT)) ) {
			if( $options['output'] == SQLAdapter::OBJECT ) {
				$options['number'] = 1;
				$onlyOne = 1;
			}
			$options['output'] = SQLAdapter::ARR_ASSOC;
			$objects = 1;
		}
		$sqlAdapter = static::getSQLAdapter();
		$r = $sqlAdapter->select($options);
		if( empty($r) && in_array($options['output'], array(SQLAdapter::ARR_ASSOC, SQLAdapter::ARR_OBJECTS, SQLAdapter::ARR_FIRST)) ) {
			return $onlyOne && $objects ? null : array();
		}
		if( !empty($r) && $objects ) {
			if( $onlyOne ) {
				$r = static::load($r[0]);
			} else {
				foreach( $r as &$rdata ) {
					$rdata = static::load($rdata);
				}
			}
		}
		return $r;
	}