classNameToUrl() public static method

Transforms the class name to url path.
public static classNameToUrl ( string $className, boolean $normalize ) : string
$className string Class name.
$normalize boolean Should the name be normalized or not
return string
Exemplo n.º 1
0
 /**
  * @dataProvider classNameToUrlProvider
  *
  * @param $class
  * @param $expected
  */
 public function testClassNameToUrl($class, $expected)
 {
     $this->assertSame($expected, PathTransformations::classNameToUrl($class, true));
     $classData = explode('\\', $class);
     $className = end($classData);
     if ($className == '\\') {
         $className = $class;
     }
     $this->assertSame($className, PathTransformations::classNameToUrl($class, false));
 }
Exemplo n.º 2
0
 /**
  * Analyzes the request and tries to match an api method.
  *
  * @param array $classData Class array form compiled cache file.
  *
  * @return CallbackResult
  * @throws RestException
  * @throws \Exception
  */
 private function matchRequest(&$classData)
 {
     if (!is_array($classData)) {
         throw new RestException("Invalid class cache data.");
     }
     // build the request url upon which we will do the matching
     try {
         $url = $this->getUrl();
     } catch (\Exception $e) {
         throw $e;
     }
     // get request method
     $method = $this->getMethod();
     if (!in_array($method, self::$supportedRequestTypes)) {
         throw new RestException('Unsupported request method: "' . $method . '"');
     }
     $callbacks = empty($classData[$method]) ? [] : $classData[$method];
     // match array
     $matchedMethod = ['methodData' => false, 'matchedParameters' => false];
     // validate that we have the ending class name in the url
     $classUrl = PathTransformations::classNameToUrl($this->class, $this->normalize);
     if (strpos($url, '/' . $classUrl . '/') !== false) {
         $matchedMethod = $this->matchMethod($callbacks, $url);
         // if method was not matched
         if (!$matchedMethod['methodData']) {
             // if no method was matched, let's try to match a default method
             $matchedMethod = $this->matchDefaultMethod($callbacks, $url, $classUrl);
         }
     }
     $methodData = isset($matchedMethod['methodData']) ? $matchedMethod['methodData'] : false;
     $matchedParameters = $matchedMethod['matchedParameters'] ? $matchedMethod['matchedParameters'] : [];
     $requestBag = new RequestBag();
     $requestBag->setClassData($classData)->setMethodData($methodData)->setMethodParameters($matchedParameters)->setApi($this->api);
     $callback = new Callback($requestBag);
     return $callback->getCallbackResult();
 }