示例#1
0
文件: Route.php 项目: romeoz/rock
 protected function isREST($url, $controller, $filters)
 {
     $handlers = ArrayHelper::only($this->RESTHandlers, Helper::getValue($filters['only'], []), Helper::getValue($filters['exclude'], []));
     foreach ($handlers as $value) {
         if (!isset($value[3])) {
             $value[3] = null;
         }
         list($verbs, $pattern, $handler, $_filters) = $value;
         $filters = !empty($filters['filters']) ? $filters['filters'] : $_filters;
         if (StringHelper::isRegexp($pattern)) {
             $url = preg_quote($url, '/');
             $pattern = "~{$pattern}";
         }
         $pattern = str_replace('{url}', $url, $pattern);
         $this->params['controller'] = $controller;
         if ($this->isRoute($verbs, $pattern, $handler, $filters)) {
             $this->errors = 0;
             return true;
         } else {
             $this->errors |= $this->errors;
         }
     }
     return false;
 }
示例#2
0
 /**
  * List contents with metadata.
  *
  * @param array $keys metadata keys
  * @param string $directory
  * @param bool $recursive
  * @param null $is
  * @return  array            listing with metadata
  */
 public function listWith(array $keys = [], $directory = '', $recursive = false, $is = null)
 {
     if (!empty($directory)) {
         if (StringHelper::isRegexp($directory)) {
             return $this->searchFilesWithByPattern($keys, $directory, $recursive, $is = null);
         }
     }
     $result = parent::listWith($keys, $directory, $recursive);
     return isset($is) ? array_filter($result, function ($value) use($is) {
         return $value['type'] === $is;
     }) : $result;
 }