PHPDaemon\Clients\HTTP\Pool::parseUrl PHP Метод

parseUrl() публичный статический Метод

Parse URL
public static parseUrl ( string $mixed ) : array | boolean
$mixed string Look Pool::buildUrl()
Результат array | boolean
    public static function parseUrl($mixed)
    {
        $url = static::buildUrl($mixed);
        if (false === $url) {
            return false;
        }
        $u = parse_url($url);
        $uri = '';
        if (isset($u['path'])) {
            $uri .= $u['path'];
            if (isset($u['query'])) {
                $uri .= '?' . $u['query'];
            }
        }
        return [$u['scheme'], $u['host'], $uri, isset($u['port']) ? $u['port'] : null];
    }

Usage Example

Пример #1
0
 /** 
  * Performs POST-request
  * @param string $url
  * @param array  $data
  * @param array  $params
  */
 public function post($url, $data = [], $params = null)
 {
     if (!is_array($params)) {
         $params = ['resultcb' => $params];
     }
     if (!isset($params['uri']) || !isset($params['host'])) {
         $prepared = Pool::parseUrl($url);
         if (!$prepared) {
             if (isset($params['resultcb'])) {
                 call_user_func($params['resultcb'], false);
             }
             return;
         }
         list($params['host'], $params['uri']) = $prepared;
     }
     if ($params['uri'] === '') {
         $params['uri'] = '/';
     }
     $this->lastURL = 'http://' . $params['host'] . $params['uri'];
     if (!isset($params['version'])) {
         $params['version'] = '1.1';
     }
     if (!isset($params['contentType'])) {
         $params['contentType'] = 'application/x-www-form-urlencoded';
     }
     $this->writeln('POST ' . $params['uri'] . ' HTTP/' . $params['version']);
     if (isset($params['proxy'])) {
         if (isset($params['proxy']['auth'])) {
             $this->writeln('Proxy-Authorization: basic ' . base64_encode($params['proxy']['auth']['username'] . ':' . $params['proxy']['auth']['password']));
         }
     }
     if (!isset($params['keepalive']) || !$params['keepalive']) {
         $this->writeln('Connection: close');
     }
     $this->writeln('Host: ' . $params['host']);
     if ($this->pool->config->expose->value && !isset($params['headers']['User-Agent'])) {
         $this->writeln('User-Agent: phpDaemon/' . Daemon::$version);
     }
     if (isset($params['cookie']) && sizeof($params['cookie'])) {
         $this->writeln('Cookie: ' . http_build_query($params['cookie'], '', '; '));
     }
     foreach ($data as $val) {
         if (is_object($val) && $val instanceof UploadFile) {
             $params['contentType'] = 'multipart/form-data';
         }
     }
     $this->writeln('Content-Type: ' . $params['contentType']);
     if ($params['contentType'] === 'application/x-www-form-urlencoded') {
         $body = http_build_query($data, '', '&', PHP_QUERY_RFC3986);
     } elseif ($params['contentType'] === 'application/x-json') {
         $body = json_encode($data);
     } else {
         $body = 'unsupported Content-Type';
     }
     $this->writeln('Content-Length: ' . strlen($body));
     if (isset($params['headers'])) {
         $this->customRequestHeaders($params['headers']);
     }
     if (isset($params['rawHeaders']) && $params['rawHeaders']) {
         $this->rawHeaders = [];
     }
     $this->writeln('');
     $this->write($body);
     $this->writeln('');
     $this->onResponse($params['resultcb']);
 }
All Usage Examples Of PHPDaemon\Clients\HTTP\Pool::parseUrl