%PDF- %PDF-
Direktori : /www/varak.net/losik.varak.net/vendor/nette/application/src/Application/Routers/ |
Current File : //www/varak.net/losik.varak.net/vendor/nette/application/src/Application/Routers/CliRouter.php |
<?php /** * This file is part of the Nette Framework (https://nette.org) * Copyright (c) 2004 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); namespace Nette\Application\Routers; use Nette; /** * The unidirectional router for CLI. (experimental) */ final class CliRouter implements Nette\Routing\Router { use Nette\SmartObject; private const PresenterKey = 'action'; /** @var array */ private $defaults; public function __construct(array $defaults = []) { $this->defaults = $defaults; } /** * Maps command line arguments to an array. */ public function match(Nette\Http\IRequest $httpRequest): ?array { if (empty($_SERVER['argv']) || !is_array($_SERVER['argv'])) { return null; } $names = [self::PresenterKey]; $params = $this->defaults; $args = $_SERVER['argv']; array_shift($args); $args[] = '--'; foreach ($args as $arg) { $opt = preg_replace('#/|-+#A', '', $arg); if ($opt === $arg) { if (isset($flag) || $flag = array_shift($names)) { $params[$flag] = $arg; } else { $params[] = $arg; } $flag = null; continue; } if (isset($flag)) { $params[$flag] = true; $flag = null; } if ($opt === '') { continue; } $pair = explode('=', $opt, 2); if (isset($pair[1])) { $params[$pair[0]] = $pair[1]; } else { $flag = $pair[0]; } } if (!isset($params[self::PresenterKey])) { throw new Nette\InvalidStateException('Missing presenter & action in route definition.'); } [$module, $presenter] = Nette\Application\Helpers::splitName($params[self::PresenterKey]); if ($module !== '') { $params[self::PresenterKey] = $presenter; $presenter = $module; } $params['presenter'] = $presenter; return $params; } /** * This router is only unidirectional. */ public function constructUrl(array $params, Nette\Http\UrlScript $refUrl): ?string { return null; } /** * Returns default values. */ public function getDefaults(): array { return $this->defaults; } }