system/HTTP/CLIRequest.php
protected function parseCommand()
	{
		// Since we're building the options ourselves,
		// we stop adding it to the segments array once
		// we have found the first dash.
		$options_found = false;

		$argc = $this->getServer('argc', FILTER_SANITIZE_NUMBER_INT);
		$argv = $this->getServer('argv');

		// We start at 1 since we never want to include index.php
		for ($i = 1; $i < $argc; $i ++)
		{
			// If there's no '-' at the beginning of the argument
			// then add it to our segments.
			if (! $options_found && strpos($argv[$i], '-') === false)
			{
				$this->segments[] = filter_var($argv[$i], FILTER_SANITIZE_STRING);
				continue;
			}

			$options_found = true;

			if (strpos($argv[$i], '-') !== 0)
			{
				continue;
			}

			$arg   = filter_var(str_replace('-', '', $argv[$i]), FILTER_SANITIZE_STRING);
			$value = null;

			// If the next item starts with a dash it's a value
			if (isset($argv[$i + 1]) && strpos($argv[$i + 1], '-') !== 0)
			{
				$value = filter_var($argv[$i + 1], FILTER_SANITIZE_STRING);
				$i ++;
			}

			$this->options[$arg] = $value;
		}
	}
protected function parseCommand()
	{
		// Since we're building the options ourselves,
		// we stop adding it to the segments array once
		// we have found the first dash.
		$options_found = false;

		$argc = $this->getServer('argc', FILTER_SANITIZE_NUMBER_INT);
		$argv = $this->getServer('argv');

		// We start at 1 since we never want to include index.php
		for ($i = 1; $i < $argc; $i ++)
		{
			// If there's no '-' at the beginning of the argument
			// then add it to our segments.
			if (! $options_found && strpos($argv[$i], '-') === false)
			{
				$this->segments[] = filter_var($argv[$i], FILTER_SANITIZE_STRING);
				continue;
			}

			$options_found = true;

			if (strpos($argv[$i], '-') !== 0)
			{
				continue;
			}

			$arg   = filter_var(str_replace('-', '', $argv[$i]), FILTER_SANITIZE_STRING);
			$value = null;

			// If the next item starts with a dash it's a value
			if (isset($argv[$i + 1]) && strpos($argv[$i + 1], '-') !== 0)
			{
				$value = filter_var($argv[$i + 1], FILTER_SANITIZE_STRING);
				$i ++;
			}

			$this->options[$arg] = $value;
		}
	}
Parses the command line it was called from and collects all options
and valid segments.

NOTE: I tried to use getopt but had it fail occasionally to find
any options, where argv has always had our back.