MediaWiki  REL1_19
PathRouter Class Reference

PathRouter class. More...

List of all members.

Public Member Functions

 add ($path, $params=array(), $options=array())
 Add a new path pattern to the path router.
 addStrict ($path, $params=array(), $options=array())
 Add a new path pattern to the path router with the strict option on.
 parse ($path)
 Parse a path and return the query matches for the path.

Protected Member Functions

 doAdd ($path, $params, $options, $key=null)
 Protected helper to do the actual bulk work of adding a single pattern.
 sortByWeight ()
 Protected helper to re-sort our patterns so that the most specific (most heavily weighted) patterns are at the start of the array.

Static Protected Member Functions

static extractTitle ($path, $pattern)
static makeWeight ($pattern)

Detailed Description

PathRouter class.

This class can take patterns such as /wiki/$1 and use them to parse query parameters out of REQUEST_URI paths.

$router->add( "/wiki/$1" );

  • Matches /wiki/Foo style urls and extracts the title $router->add( array( 'edit' => "/edit/$1" ), array( 'action' => '$key' ) );
  • Matches /edit/Foo style urls and sets action=edit $router->add( '/$2/$1', array( 'variant' => '$2' ), array( '$2' => array( 'zh-hant', 'zh-hans' ) );
  • Matches /zh-hant/Foo or /zh-hans/Foo $router->addStrict( "/foo/Bar", array( 'title' => 'Baz' ) );
  • Matches /foo/Bar explicitly and uses "Baz" as the title $router->add( '/help/$1', array( 'title' => 'Help:$1' ) );
  • Matches /help/Foo with "Help:Foo" as the title $router->add( '/$1', array( 'foo' => array( 'value' => 'bar$2' ) );
  • Matches /Foo and sets 'foo' to 'bar$2' without $2 being replaced $router->add( '/$1', array( 'data:foo' => 'bar' ), array( 'callback' => 'functionname' ) );
  • Matches /Foo, adds the key 'foo' with the value 'bar' to the data array and calls functionname( &$matches, $data );

Path patterns:

  • Paths may contain $# patterns such as $1, $2, etc...
  • $1 will match 0 or more while the rest will match 1 or more
  • Unless you use addStrict "/wiki" and "/wiki/" will be expanded to "/wiki/$1"

Params:

  • In a pattern $1, $2, etc... will be replaced with the relevant contents
  • If you used a keyed array as a path pattern, $key will be replaced with the relevant contents
  • The default behavior is equivalent to `array( 'title' => '$1' )`, if you don't want the title parameter you can explicitly use `array( 'title' => false )`
  • You can specify a value that won't have replacements in it using `'foo' => array( 'value' => 'bar' );`

Options:

  • The option keys $1, $2, etc... can be specified to restrict the possible values of that variable. A string can be used for a single value, or an array for multiple.
  • When the option key 'strict' is set (Using addStrict is simpler than doing this directly) the path won't have $1 implicitly added to it.
  • The option key 'callback' can specify a callback that will be run when a path is matched. The callback will have the arguments ( &$matches, $data ) and the matches array can be modified.
Since:
1.19
Author:
Daniel Friesen

Definition at line 52 of file PathRouter.php.


Member Function Documentation

PathRouter::add ( path,
params = array(),
options = array() 
)

Add a new path pattern to the path router.

Parameters:
$pathThe path pattern to add
$paramsThe params for this path pattern
$optionsThe options for this path pattern

Definition at line 130 of file PathRouter.php.

References $options, $path, and doAdd().

Referenced by addStrict(), WebRequest\getPathInfo(), PathRouterTest\setUp(), PathRouterTest\testAdditionalParameter(), PathRouterTest\testCallback(), PathRouterTest\testFail(), PathRouterTest\testKeyParameter(), PathRouterTest\testLoose(), PathRouterTest\testOrder(), PathRouterTest\testPatternUrlencoding(), PathRouterTest\testRawParamValue(), and PathRouterTest\testRestrictedValue().

Here is the call graph for this function:

Here is the caller graph for this function:

PathRouter::addStrict ( path,
params = array(),
options = array() 
)

Add a new path pattern to the path router with the strict option on.

See also:
self::add

Definition at line 144 of file PathRouter.php.

References $options, $path, and add().

Referenced by PathRouterTest\testWeight().

Here is the call graph for this function:

Here is the caller graph for this function:

PathRouter::doAdd ( path,
params,
options,
key = null 
) [protected]

Protected helper to do the actual bulk work of adding a single pattern.

This is in a separate method so that add() can handle the difference between a single string $path and an array() $path that contains multiple path patterns each with an associated $key to pass on.

Definition at line 60 of file PathRouter.php.

References $options, $path, and makeWeight().

Referenced by add().

Here is the call graph for this function:

Here is the caller graph for this function:

static PathRouter::extractTitle ( path,
pattern 
) [static, protected]

Definition at line 222 of file PathRouter.php.

References $matches, $n, $path, and PathRouterPatternReplacer\replace().

Referenced by parse().

Here is the call graph for this function:

Here is the caller graph for this function:

static PathRouter::makeWeight ( pattern) [static, protected]

Definition at line 161 of file PathRouter.php.

References $path.

Referenced by doAdd().

Here is the caller graph for this function:

PathRouter::parse ( path)

Parse a path and return the query matches for the path.

Parameters:
$pathThe path to parse
Returns:
Array The array of matches for the path

Definition at line 201 of file PathRouter.php.

References $matches, $path, extractTitle(), and sortByWeight().

Here is the call graph for this function:

PathRouter::sortByWeight ( ) [protected]

Protected helper to re-sort our patterns so that the most specific (most heavily weighted) patterns are at the start of the array.

Definition at line 153 of file PathRouter.php.

Referenced by parse().

Here is the caller graph for this function:


The documentation for this class was generated from the following file: