PHP code example of israel-nogueira / fast-router

1. Go to this page and download the library: Download israel-nogueira/fast-router library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

israel-nogueira / fast-router example snippets



    sraelNogueira\fastRouter\router;



	namespace IsraelNogueira\Models;
	use IsraelNogueira\fastRouter\router;

	//-------------------------------------------------------------------------------
	// No modo estático a requisição é direto no método
	//-------------------------------------------------------------------------------

		router::get('admin/path1/path2', function () {});
		router::post('admin/path1/path2', function () {});
		router::put('admin/path1/path2', function () {});
		router::delete('admin/path1/path2', function () {});
	
	//-------------------------------------------------------------------------------
	// O método "any" aceita qualquer tipo de requisição
	//-------------------------------------------------------------------------------
	
		router::any('admin/path1/path2', function () {});    		
	
	//-------------------------------------------------------------------------------
	// Ele aceita o seguinte grupo de requests:
	//-------------------------------------------------------------------------------
	// 'ANY','MATH','GET', 'REDIRECT','POST','RMDIR','MKDIR',
	// 'INDEX','MOVE','TRACE','DELETE','TRACK','PUT','HEAD','OPTIONS','CONNECT'
	//
	//
	//  math aceitará os métodos listados na array 
	//-------------------------------------------------------------------------------
	
		router::math(['POST','GET'],'admin/path1/path2', function () {});
	
	



	namespace IsraelNogueira\Models;
	use IsraelNogueira\fastRouter\router;

	/*
	
	Rotas:
	/admin
	/admin/usuarios
	/admin/fotos
	/admin/produtos/detalhes
	/admin/produtos/fotos
	
	*/


	router::group('admin',function(){
		router::get('usuarios', function () {});
		router::get('fotos', function () {});
		router::group('produtos',function(){
			router::get('detalhes', function () {});
			router::get('fotos', function () {});
		})
	})




	namespace IsraelNogueira\Models;
	use IsraelNogueira\fastRouter\router;

	router::group([
			'prefix'=>'/admin',
			'middleware'=>[
				'App/Middlewares/auth@middl_1',
				'App/Middlewares/auth@middl_2',
				'App/Middlewares/auth@middl_3'
			]
		],
		function($return){
			print_r($return);
			exit;
		});
	
	


	namespace IsraelNogueira\Models;
	use IsraelNogueira\fastRouter\router;
	
	function middl_1($return=[], $next=null){
		// faz o que tiver que fazer
		// ... ... ... 
		// caso você queira parar o processo e retornar um erro
		if($qualquer_erro){
			throw new Exception("Error Processing Request", 1);
		}
		// executa a próxima
		$next($return, $next);
	}
	
	function middl_2($return=[], $next=null){
		// faz o que tiver que fazer
		// ... ... ... 
		// caso você queira apenas armazenar o erro
		if($qualquer_erro){
			$return[] = ['status'=>false,'middleware'=>[__CLASS__.' > '.__FUNCTION__]];
		}
		// executa a próxima
		$next($return, $next);
	}
	
	function middl_3($return=[], $next=null){
		// faz o que tiver que fazer
		// ... ... ... 
		// Ou ainda executar uma função paralela
		if($qualquer_erro){
			$return[] = ['status'=>false,'middleware'=>[__CLASS__.' > '.__FUNCTION__]];
			$this->corrige_algo();
		}
		// executa a próxima
		$next($return, $next);
	}


	router::group([
		'prefix'=>'/admin',
		'middleware'=>['middl_1','middl_2','middl_3']],
		function($return){
			print_r($return);
			exit;
		}
	);






	namespace IsraelNogueira\Models;
	use IsraelNogueira\fastRouter\router;

	//-------------------------------------------------------
	// Variáveis ID e NOME podem ser passadas como parâmetros
	//-------------------------------------------------------

		router::get('admin/{ID}/{NOME}', function ($ID,$NOME) {});
	
	//--------------------------------------------------------------------------------------
	// No regex, a expressão {idade[0-9]+} é uma expressão regular que define 
	// um padrão de correspondência de texto que procura por uma string que 
	// começa com a sequência de caracteres idade, seguida por um ou mais dígitos de 0 a 9.
	// eo O \d representa qualquer dígito numérico e o sinal de + significa 
	// que o padrão anterior deve aparecer uma ou mais vezes na string correspondente. 
	//--------------------------------------------------------------------------------------
	
		router::get('admin/{idade:[0-9]+}/{id:\d+}', function ($iddade,$id) {});
	
	/*
	|-----------------------------------------------------------------------------------
	| NÃO OBRIGATORIEDADE DO PARAMETRO
	|-----------------------------------------------------------------------------------
	|
	|  Caso não queira um parametro obrigatório basta colocar ele nesse formato: [/{param}/] exemplo:
	|
	|-----------------------------------------------------------------------------------
	|*/
	
		router::get('admin/{id:\d+}[/{{title}}/]', function ($id,$title) {});
	
	/*
	|-----------------------------------------------------------------------------------
	| Para parametros não obrigatórios enclosurados
	|-----------------------------------------------------------------------------------
	| 
	| Isso quer dizer que apenas o admin, id e nome são obrigatórios. 
	| Quanto ao enclousuramento ficará com o formato [/{param}/] com barra no inicio e no fim;  
	| Enclosurando fica: [/{{nome}}[/{{sobrenome}}/]/]
	| Para facilitar a visualização será algo mais ou menos assim:
	| [/ param1 
	|	[/ param1 
	|		[/ param1 
	|			[/ param1 /] 
	|		/]
	|	/]
	| /]
	-------------------------------------------------------------------------------------
	*/

		router::post('admin/{id:\d+}[/{{title}}[/{{length}}[/{{last}}/]/]/]', function ($id,$title,$length,$last) {});