本文整理汇总了PHP中Uri::getPathParams方法的典型用法代码示例。如果您正苦于以下问题:PHP Uri::getPathParams方法的具体用法?PHP Uri::getPathParams怎么用?PHP Uri::getPathParams使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Uri
的用法示例。
在下文中一共展示了Uri::getPathParams方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: dispatch
public static function dispatch(Http_Scriptlet_Context $context_, Uri $uri_)
{
$params = $uri_->getPathParams();
$storeName = array_shift($params);
$categoryName = array_shift($params);
$file = Io::fileUpload();
$store = Media::store($storeName);
$store->add($file, $file->getName(), $categoryName);
// TODO JSON
echo $store->uri($file->getName(), $categoryName);
}
示例2: dispatch
/**
* @param \Components\Http_Scriptlet_Context $context_
* @param \Components\Uri $uri_
*/
public static function dispatch(Http_Scriptlet_Context $context_, Uri $uri_)
{
$params = $uri_->getPathParams();
$base64 = end($params);
$info = unserialize(\str\decodeBase64Url($base64));
$path = array_shift($info);
$id = array_shift($info);
$category = array_shift($info);
$scheme = array_shift($info);
$store = Media::store($path);
$file = $store->findByScheme($scheme, $id, $category);
header('Content-Length: ' . $file->getSize()->bytes());
readfile((string) $file);
}
示例3: dispatch
public static function dispatch(Http_Scriptlet_Context $context_, Uri $uri_)
{
if (!($method = $uri_->shiftPathParam())) {
throw new Http_Exception('rest/resource', null, Http_Exception::NOT_FOUND);
}
$resource = get_called_class();
if (null === self::$m_methods || false === isset(self::$m_methods[$resource][$method])) {
self::initializeMethods();
if (false === isset(self::$m_methods[$resource][$method])) {
throw new Http_Exception('rest/resource', null, Http_Exception::NOT_FOUND);
}
}
$method = self::$m_methods[$resource][$method];
if (false === isset($method['methods'][$context_->getRequest()->getMethod()])) {
throw new Http_Exception('rest/resource', null, Http_Exception::NOT_FOUND);
}
if (isset($method['path']) && count($uri_->getPathParams()) < count($method['path'])) {
throw new Http_Exception('rest/resource', null, Http_Exception::NOT_FOUND);
}
/* @var $resource \Components\Rest_Resource */
$resource = new $resource();
$resource->request = $context_->getRequest();
$resource->response = $context_->getResponse();
$params = [];
if (isset($method['path']) || isset($method['query'])) {
$marshaller = Object_Marshaller::forMimetype($resource->response->getMimetype());
foreach ($method['path'] as $name => $type) {
$params[$name] = $marshaller->unmarshal($uri_->shiftPathParam(), $type);
}
if (isset($method['query'])) {
foreach ($method['query'] as $name => $options) {
if ($uri_->hasQueryParam($options['name'])) {
$params[$name] = $marshaller->unmarshal($uri_->getQueryParam($options['name']), $options['type']);
} else {
if ($options['value']) {
$params[$name] = $marshaller->unmarshal($options['value'], $options['type']);
} else {
$params[$name] = null;
}
}
}
}
}
if ($result = call_user_func_array([$resource, $method['name']], $params)) {
echo $marshaller->marshal($result);
}
}
示例4: dispatch
/**
* @param \Components\Http_Scriptlet_Context $context_
* @param \Components\Uri $uri_
*/
public static function dispatch(Http_Scriptlet_Context $context_, Uri $uri_)
{
if (__CLASS__ === get_called_class()) {
$segments = $uri_->getPathParams(true);
$count = count($segments);
$params = [];
for ($i = $count; 0 < $i; $i--) {
$path = implode('/', $segments);
foreach (self::$m_routes as $pattern => $scriptlet) {
$matches = [];
if (1 === preg_match($pattern, $path, $matches)) {
$uri_->setPathParams($params);
foreach ($segments as $segment) {
$context_->getContextUri()->pushPathParam($segment);
}
$scriptlet::dispatch($context_, $uri_);
return;
}
}
array_unshift($params, array_pop($segments));
}
if (null !== ($scriptlet = self::$m_default)) {
$scriptlet::dispatch($context_, $uri_);
return;
}
} else {
$scriptlet = new static();
$scriptlet->request = $context_->getRequest();
$scriptlet->response = $context_->getResponse();
$method = $scriptlet->request->getMethod();
if (method_exists($scriptlet, strtolower($method))) {
return $scriptlet->{$method}();
}
}
throw new Http_Exception('http/scriptlet', null, Http_Exception::NOT_FOUND);
}