<?php

	/*
	Mapear la url ingresada en el navegador
	1. Controlador
	2. M�todo
	3. Par�metro
	ejm: /users/view/2
	*/

	class Core {

		protected $_currentController = 'login';
		protected $_currentMethod = 'index';
		protected $_parameters = [];

		// Constructor
		public function __Construct() {
			//print_r($this->getUrl());
			$url = $this->getUrl();
			// buscar en controlaores si el controlador existe
			if (isset($url[0]) && file_exists(APP_PATH.'/controllers/'.ucwords($url[0]).'.php')) {
				// si existe se setea como controlador por defecto
				$this->_currentController = ucwords($url[0]);
				// unset indice
				unset($url[0]);
			}
			// requerir el controlador 
			require_once APP_PATH.'/controllers/'.$this->_currentController.'.php';
			$this->_currentController = new $this->_currentController;

			// verificar la segunda parte de la url (el m�todo)
			if(isset($url[1])) {
				if (method_exists($this->_currentController, $url[1])) {
					// chequeamos el m�todo
					$this->_currentMethod = $url[1];
					// unset indice
					unset($url[1]);
				}
			}
			//echo $this->_currentMethod;

			//obtener par�metros
			$this->_parameters = $url ? array_values($url) : [];

			//llamar callback con _parameters array
			call_user_func_array([$this->_currentController, $this->_currentMethod], $this->_parameters);
		}

		public function getUrl() {
			//echo $_GET['url'];
			if(isset($_GET['url'])) {
				$url = rtrim($_GET['url'], '/');
				$url = filter_var($url, FILTER_SANITIZE_URL);
				$url = explode('/', $url);
				return $url;
			}
		}
	
	}

?>
