Router.php
public function buildUri(array $params = null, $controller = null, $action = null, $prepareUri = true)
    {
        $request = Container::getRequest();
        $request->setBaseUrl($this->getBaseUrl());
        if ($prepareUri) {
            [$params, $controller, $action] = $this->prepareUri($params, $controller, $action);
        } else {
            $params = $params ?? [];
            $controller = $controller ?? self::DEFAULT_CONTROLLER;
            $action = $action ?? self::DEFAULT_ACTION;
        }
        if (!is_array($params)) {
            $params = [];
        }
        if (isset($params['controller']) && ($controller === self::DEFAULT_CONTROLLER)) {
            $controller = $params['controller'];
            unset($params['controller']);
        }
        if (isset($params['action']) && ($action === self::DEFAULT_ACTION)) {
            $action = $params['action'];
            unset($params['action']);
        }
        $hasParams = count($params);
        $hasController = $controller != self::DEFAULT_CONTROLLER;
        $hasAction = $action != self::DEFAULT_ACTION;
        $uri  = $hasParams || $hasAction || $hasController ? '/' . $controller : '/';
        $uri .= $hasParams || $hasAction ? '/' . $action : '';
        foreach ($params as $key => $value) {
            $uri .= '/' . $key . '/' . $value;
        }
        
        $uri = '/' . ltrim(rtrim($request->getBaseUrl(), '/') . $uri, '/');
        return $uri;
    }
public function buildUri(array $params = null, $controller = null, $action = null, $prepareUri = true)
    {
        $request = Container::getRequest();
        $request->setBaseUrl($this->getBaseUrl());
        if ($prepareUri) {
            [$params, $controller, $action] = $this->prepareUri($params, $controller, $action);
        } else {
            $params = $params ?? [];
            $controller = $controller ?? self::DEFAULT_CONTROLLER;
            $action = $action ?? self::DEFAULT_ACTION;
        }
        if (!is_array($params)) {
            $params = [];
        }
        if (isset($params['controller']) && ($controller === self::DEFAULT_CONTROLLER)) {
            $controller = $params['controller'];
            unset($params['controller']);
        }
        if (isset($params['action']) && ($action === self::DEFAULT_ACTION)) {
            $action = $params['action'];
            unset($params['action']);
        }
        $hasParams = count($params);
        $hasController = $controller != self::DEFAULT_CONTROLLER;
        $hasAction = $action != self::DEFAULT_ACTION;
        $uri  = $hasParams || $hasAction || $hasController ? '/' . $controller : '/';
        $uri .= $hasParams || $hasAction ? '/' . $action : '';
        foreach ($params as $key => $value) {
            $uri .= '/' . $key . '/' . $value;
        }
        
        $uri = '/' . ltrim(rtrim($request->getBaseUrl(), '/') . $uri, '/');
        return $uri;
    }
public function buildUri ( array $ params = null , $ controller = null , $ action = null , $ prepareUri = true ) { $ request = Container :: getRequest ( ) ; $ request -> setBaseUrl ( $ this -> getBaseUrl ( ) ) ; if ( $ prepareUri ) { [ $ params , $ controller , $ action ] = $ this -> prepareUri ( $ params , $ controller , $ action ) ; } else { $ params = $ params ?? [ ] ; $ controller = $ controller ?? self :: DEFAULT_CONTROLLER ; $ action = $ action ?? self :: DEFAULT_ACTION ; } if ( ! is_array ( $ params ) ) { $ params = [ ] ; } if ( isset ( $ params [ 'controller' ] ) && ( $ controller === self :: DEFAULT_CONTROLLER ) ) { $ controller = $ params [ 'controller' ] ; unset ( $ params [ 'controller' ] ) ; } if ( isset ( $ params [ 'action' ] ) && ( $ action === self :: DEFAULT_ACTION ) ) { $ action = $ params [ 'action' ] ; unset ( $ params [ 'action' ] ) ; } $ hasParams = count ( $ params ) ; $ hasController = $ controller != self :: DEFAULT_CONTROLLER ; $ hasAction = $ action != self :: DEFAULT_ACTION ; $ uri = $ hasParams || $ hasAction || $ hasController ? '/' . $ controller : '/' ; $ uri .= $ hasParams || $ hasAction ? '/' . $ action : '' ; foreach ( $ params as $ key => $ value ) { $ uri .= '/' . $ key . '/' . $ value ; } $ uri = '/' . ltrim ( rtrim ( $ request -> getBaseUrl ( ) , '/' ) . $ uri , '/' ) ; return $ uri ; }
Build an URL from specified params
@param array $params
@param string $controller
@param string $action
@param bool $prepareUri
@return string
Build an URL from specified params