Пример #1
0
 /**
  * 
  * 
  * @param DF_Web_Path $path
  * @param DF_Web_Routing_ActionChain $chain
  * @return integer
  */
 protected static function chained_match($path, $chain)
 {
     if (!$path instanceof DF_Web_Path) {
         throw new DF_Error_InvalidArgumentException("path", $path, "DF_Web_Path");
     }
     if (!$chain instanceof DF_Web_Routing_ActionChain) {
         throw new DF_Error_InvalidArgumentException("chain", $chain, "DF_Web_Routing_ActionChain");
     }
     $action = $chain->get_endpoint();
     $a_path = $action->get_path_match();
     $a_args = $action->get_args();
     $a_parts = $a_path->get_path_parts();
     $a_numparts = count($a_parts);
     $parts = $path->get_path_parts();
     $numparts = count($parts);
     if ($numparts < $a_numparts) {
         #    return -1;
     }
     $rest = $parts;
     # FIXME For chains, dont do this for normal path actions
     foreach ($tmp = $chain->get_chain_list() as $_a) {
         $rest = self::eat_path_parts($_a, $rest);
     }
     $count = count($rest);
     if ($a_args instanceof DF_Web_Routing_ActionArgs_Any) {
         $count += 1000;
     }
     return $count;
 }