Merge "Special:Newpages feed now shows first revision instead of latest revision"
[lhc/web/wiklou.git] / includes / PathRouter.php
index d367e4d..cc6fc4a 100644 (file)
  *
  * $router->add( "/wiki/$1" );
  *   - Matches /wiki/Foo style urls and extracts the title
- * $router->add( array( 'edit' => "/edit/$key" ), array( 'action' => '$key' ) );
+ * $router->add( [ 'edit' => "/edit/$key" ], [ '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' )
+ *   [ 'variant' => '$2' ],
+ *   [ '$2' => [ 'zh-hant', 'zh-hans' ] ]
  * );
  *   - Matches /zh-hant/Foo or /zh-hans/Foo
- * $router->addStrict( "/foo/Bar", array( 'title' => 'Baz' ) );
+ * $router->addStrict( "/foo/Bar", [ 'title' => 'Baz' ] );
  *   - Matches /foo/Bar explicitly and uses "Baz" as the title
- * $router->add( '/help/$1', array( 'title' => 'Help:$1' ) );
+ * $router->add( '/help/$1', [ 'title' => 'Help:$1' ] );
  *   - Matches /help/Foo with "Help:Foo" as the title
- * $router->add( '/$1', array( 'foo' => array( 'value' => 'bar$2' ) );
+ * $router->add( '/$1', [ 'foo' => [ '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' ) );
+ * $router->add( '/$1', [ 'data:foo' => 'bar' ], [ 'callback' => 'functionname' ] );
  *   - Matches /Foo, adds the key 'foo' with the value 'bar' to the data array
  *     and calls functionname( &$matches, $data );
  *
@@ -56,7 +56,7 @@
  *   - 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' );`
+ *     using `'foo' => [ 'value' => 'bar' ];`
  *
  * Options:
  *   - The option keys $1, $2, etc... can be specified to restrict the possible values
@@ -75,17 +75,17 @@ class PathRouter {
        /**
         * @var array
         */
-       private $patterns = array();
+       private $patterns = [];
 
        /**
         * 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.
-        * @param $path string
-        * @param $params array
-        * @param $options array
-        * @param $key null|string
+        * @param string $path
+        * @param array $params
+        * @param array $options
+        * @param null|string $key
         */
        protected function doAdd( $path, $params, $options, $key = null ) {
                // Make sure all paths start with a /
@@ -124,9 +124,9 @@ class PathRouter {
                                        // of a pattern for a little more efficiency
                                        $paramArrKey = 'value';
                                }
-                               $params[$paramName] = array(
+                               $params[$paramName] = [
                                        $paramArrKey => $paramData
-                               );
+                               ];
                        }
                }
 
@@ -135,17 +135,17 @@ class PathRouter {
                foreach ( $options as $optionName => $optionData ) {
                        if ( preg_match( '/^\$\d+$/u', $optionName ) ) {
                                if ( !is_array( $optionData ) ) {
-                                       $options[$optionName] = array( $optionData );
+                                       $options[$optionName] = [ $optionData ];
                                }
                        }
                }
 
-               $pattern = (object)array(
+               $pattern = (object)[
                        'path' => $path,
                        'params' => $params,
                        'options' => $options,
                        'key' => $key,
-               );
+               ];
                $pattern->weight = self::makeWeight( $pattern );
                $this->patterns[] = $pattern;
        }
@@ -157,7 +157,7 @@ class PathRouter {
         * @param array $params The params for this path pattern
         * @param array $options The options for this path pattern
         */
-       public function add( $path, $params = array(), $options = array() ) {
+       public function add( $path, $params = [], $options = [] ) {
                if ( is_array( $path ) ) {
                        foreach ( $path as $key => $onePath ) {
                                $this->doAdd( $onePath, $params, $options, $key );
@@ -170,11 +170,11 @@ class PathRouter {
        /**
         * Add a new path pattern to the path router with the strict option on
         * @see self::add
-        * @param $path string|array
-        * @param $params array
-        * @param $options array
+        * @param string|array $path
+        * @param array $params
+        * @param array $options
         */
-       public function addStrict( $path, $params = array(), $options = array() ) {
+       public function addStrict( $path, $params = [], $options = [] ) {
                $options['strict'] = true;
                $this->add( $path, $params, $options );
        }
@@ -184,7 +184,7 @@ class PathRouter {
         * (most heavily weighted) patterns are at the start of the array.
         */
        protected function sortByWeight() {
-               $weights = array();
+               $weights = [];
                foreach ( $this->patterns as $key => $pattern ) {
                        $weights[$key] = $pattern->weight;
                }
@@ -192,7 +192,7 @@ class PathRouter {
        }
 
        /**
-        * @param $pattern object
+        * @param object $pattern
         * @return float|int
         */
        protected static function makeWeight( $pattern ) {
@@ -233,7 +233,7 @@ class PathRouter {
         * Parse a path and return the query matches for the path
         *
         * @param string $path The path to parse
-        * @return Array The array of matches for the path
+        * @return array The array of matches for the path
         */
        public function parse( $path ) {
                // Make sure our patterns are sorted by weight so the most specific
@@ -253,12 +253,12 @@ class PathRouter {
                // array() (a match with no data) but our WebRequest caller
                // expects array() even when we have no matches so return
                // a array() when we have null
-               return is_null( $matches ) ? array() : $matches;
+               return is_null( $matches ) ? [] : $matches;
        }
 
        /**
-        * @param $path string
-        * @param $pattern string
+        * @param string $path
+        * @param string $pattern
         * @return array|null
         */
        protected static function extractTitle( $path, $pattern ) {
@@ -270,8 +270,8 @@ class PathRouter {
                $regexp = preg_replace( '#\\\\\$(\d+)#u', '(?P<par$1>.+?)', $regexp );
                $regexp = "#^{$regexp}$#";
 
-               $matches = array();
-               $data = array();
+               $matches = [];
+               $data = [];
 
                // Try to match the path we were asked to parse with our regexp
                if ( preg_match( $regexp, $path, $m ) ) {
@@ -342,7 +342,7 @@ class PathRouter {
 
                        // If this match includes a callback, execute it
                        if ( isset( $pattern->options['callback'] ) ) {
-                               call_user_func_array( $pattern->options['callback'], array( &$matches, $data ) );
+                               call_user_func_array( $pattern->options['callback'], [ &$matches, $data ] );
                        }
                } else {
                        // Our regexp didn't match, return null to signify no match.
@@ -363,12 +363,12 @@ class PathRouterPatternReplacer {
         * We do this inside of a replacement callback because after replacement we can't tell the
         * difference between a $1 that was not replaced and a $1 that was part of
         * the content a $1 was replaced with.
-        * @param $value string
-        * @return string
+        * @param string $value
+        * @return string|false
         */
        public function replace( $value ) {
                $this->error = false;
-               $value = preg_replace_callback( '/\$(\d+|key)/u', array( $this, 'callback' ), $value );
+               $value = preg_replace_callback( '/\$(\d+|key)/u', [ $this, 'callback' ], $value );
                if ( $this->error ) {
                        return false;
                }
@@ -376,7 +376,7 @@ class PathRouterPatternReplacer {
        }
 
        /**
-        * @param $m array
+        * @param array $m
         * @return string
         */
        protected function callback( $m ) {