<?php
namespace SabaiApps\Framework\Application;

/**
 * Interface for route classes.
 * Defines methods for route string representation, forwarding, and controller retrieval.
 */
interface IRoute {

	/**
	 * Returns the string representation of the route.
	 *
	 * @return string
	 */
	public function __toString();

	/**
	 * Checks if this route is a forward to another route.
	 *
	 * @return string|false Returns the target route name if forwarding, or false otherwise.
	 */
	public function isForward();

	/**
	 * Gets the controller associated with this route.
	 *
	 * @return mixed Controller instance or class name.
	 */
	public function getController();

	/**
	 * Gets the arguments to be passed to the controller constructor.
	 *
	 * @return array
	 */
	public function getControllerArgs();

	/**
	 * Gets the file path of the controller.
	 *
	 * @return string|null File path or null if not applicable.
	 */
	public function getControllerFile();

	/**
	 * Gets the name of the requested controller.
	 *
	 * @return string|false
	 */
	public function getControllerName();
}
