mirror of
https://github.com/jimeh/php-rack.git
synced 2026-02-19 03:46:39 +00:00
added public swap method to replace a middleware
stack item
This commit is contained in:
@@ -75,6 +75,7 @@ All this middleware does is check if there is a GET or a POST variable by the na
|
||||
* `Rack::add($name, $file = null)` — Add middleware class with name `$name`, and require file `$file` if set, and file exists.
|
||||
* `Rack::insert_before($target, $name, $file = null)` — Same as `Rack::add()`, except that instead of placing the new middleware at the end of the stack, it is inserted before the middleware `$name`.
|
||||
* `Rack::insert_after($target, $name, $file = null)` — Same as `Rack::insert_before()`, except new middleware is inserted after `$target`.
|
||||
* `Rack::swap($target, $name, $file = null)` — Replace `$target` middleware with `$name`.
|
||||
* `Rack::init($middleware = array())` — Can optionally be used as a simpler way to start Rack, as it takes an array of strings representing the stack classes. It also starts output buffering, so anything echoed within a stack class, will not be output till after Rack has output it's headers. Is also automatically called to start output buffering if needed the first time you call `Rack::add()`, `Rack::insert_before()`, or `Rack::insert_after()`.
|
||||
* `Rack::not_found()` — A shortcut method you can use when you want to return a 404 Not Found error status/page. It simply returns `array(404, array("Content-Type" => "text/html"), "Not Found")`.
|
||||
* `Rack::run()` — Initiate and execute the Rack stack.
|
||||
|
||||
22
lib/rack.php
22
lib/rack.php
@@ -105,6 +105,28 @@ class Rack {
|
||||
}
|
||||
|
||||
|
||||
public static function swap ($target, $name, $file = null) {
|
||||
if ( !self::$constructed ) {
|
||||
if ( array_key_exists($target, self::$middleware) ) {
|
||||
$keys = array_keys(self::$middleware);
|
||||
$length = count($keys);
|
||||
$middleware = array();
|
||||
for ( $i=0; $i < $length; $i++ ) {
|
||||
if ( $keys[$i] == $target ) {
|
||||
$middleware[$name] = true;
|
||||
} else {
|
||||
$middleware[$keys[$i]] =& self::$middleware[$keys[$i]];
|
||||
}
|
||||
}
|
||||
self::$middleware = $middleware;
|
||||
self::require_file($file);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public static function not_found () {
|
||||
return array(404, array("Content-Type" => "text/html"), "Not Found");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user