mirror of https://github.com/flightphp/core
				
				
				
			
							parent
							
								
									7877bf33ce
								
							
						
					
					
						commit
						37a2fd5d9d
					
				| @ -0,0 +1,73 @@ | ||||
| Flight allows you to filter methods before and after they are called. There are no predefined hooks | ||||
| you need to memorize. You can filter any of the default framework methods as well as any custom methods that | ||||
| you've mapped. | ||||
| 
 | ||||
| A filter function looks like this: | ||||
| 
 | ||||
|     function(&$params, &$output) { | ||||
|         // Filter code | ||||
|     } | ||||
| 
 | ||||
| Using the passed in variables you can manipulate the input parameters and/or the output. | ||||
| 
 | ||||
| You can have a filter run before a method by doing: | ||||
| 
 | ||||
|     Flight::before('start', function(&$params, &$output){ | ||||
|         // Do something | ||||
|     }); | ||||
| 
 | ||||
| You can have a filter run after a method by doing: | ||||
| 
 | ||||
|     Flight::after('start', function(&$params, &$output){ | ||||
|         // Do something | ||||
|     }); | ||||
| 
 | ||||
| You can add as many filters as you want to any method. They will be called in the order | ||||
| that they are declared. | ||||
| 
 | ||||
| Here's an example of the filtering process: | ||||
| 
 | ||||
|     // Map a custom method | ||||
|     Flight::map('hello', function($name){ | ||||
|         return "Hello, $name!"; | ||||
|     }); | ||||
| 
 | ||||
|     // Add a before filter | ||||
|     Flight::before('hello', function(&$params, &$output){ | ||||
|         // Manipulate the parameter | ||||
|         $params[0] = 'Fred'; | ||||
|     }); | ||||
| 
 | ||||
|     // Add an after filter | ||||
|     Flight::after('hello', function(&$params, &$output){ | ||||
|         // Manipulate the output | ||||
|         $output .= " Have a nice day!"; | ||||
|     } | ||||
| 
 | ||||
|     // Invoke the custom method | ||||
|     echo Flight::hello('Bob'); | ||||
| 
 | ||||
| This should display: | ||||
| 
 | ||||
|     Hello Fred! Have a nice day!  | ||||
| 
 | ||||
| If you have defined multiple filters, you can break the chain by returning `false` in any of your filter functions: | ||||
| 
 | ||||
|     Flight::before('start', function(&$params, &$output){ | ||||
|         echo 'one'; | ||||
|     }); | ||||
| 
 | ||||
|     Flight::before('start', function(&$params, &$output){ | ||||
|         echo 'two'; | ||||
| 
 | ||||
|         // This will end the chain | ||||
|         return false; | ||||
|     }); | ||||
| 
 | ||||
|     // This will not get called | ||||
|     Flight::before('start', function(&$params, &$output){ | ||||
|         echo 'three'; | ||||
|     }); | ||||
| 
 | ||||
| Note, core methods such as `map` and `register` cannot be filtered because they are called | ||||
| directly and not invoked dynamically. | ||||
					Loading…
					
					
				
		Reference in new issue
	
	 shoully
						shoully