Phalcon\Http\Client\Header::parse PHP Method

parse() public method

public parse ( $content ) : boolean
$content
return boolean
    public function parse($content)
    {
        if (empty($content)) {
            return false;
        }
        if (is_string($content)) {
            $content = array_filter(explode("\r\n", $content));
        } elseif (!is_array($content)) {
            return false;
        }
        $status = [];
        if (preg_match('%^HTTP/(\\d(?:\\.\\d)?)\\s+(\\d{3})\\s?+(.+)?$%i', $content[0], $status)) {
            $this->status = array_shift($content);
            $this->version = $status[1];
            $this->statusCode = intval($status[2]);
            $this->statusMessage = isset($status[3]) ? $status[3] : '';
        }
        foreach ($content as $field) {
            if (!is_array($field)) {
                $field = array_map('trim', explode(':', $field, 2));
            }
            if (count($field) == 2) {
                $this->set($field[0], $field[1]);
            }
        }
        return true;
    }

Usage Example

Beispiel #1
0
 public function testHeaderParsedCorrectlyBothWithAndWithoutMessage()
 {
     $stringHeaderWithMessage = "HTTP/1.1 200 OK\r\nDate: Fri, 06 Nov 2015 10:30:15 GMT\r\nServer: Apache\r\nX-Server: http-devel, test.test\r\nCache-Control: max-age=0\r\nExpires: Fri, 06 Nov 2015 10:30:15 GMT\r\nX-Server: nb\r\nContent-Type: application/json;charset=UTF-8\r\nTransfer-Encoding: chunked";
     $stringHeaderNoMessage = "HTTP/1.1 550";
     $testData = [$stringHeaderWithMessage => ["statusCode" => 200, "statusMessage" => "OK", "status" => "HTTP/1.1 200 OK"], $stringHeaderNoMessage => ["statusCode" => 550, "statusMessage" => "", "status" => "HTTP/1.1 550"]];
     foreach ($testData as $stringHeader => $expected) {
         $header = new Header();
         $header->parse($stringHeader);
         $this->assertEquals($header->statusCode, $expected["statusCode"]);
         $this->assertEquals($header->statusMessage, $expected["statusMessage"]);
         $this->assertEquals($header->status, $expected["status"]);
     }
 }