"4.0", "UID" => "foo", "BDAY" => "19850407", "REV" => "19951031T222710Z", "LANG" => "nl", "N" => ["Last", "First", "Middle", "", ""], "item1.TEL" => "+1 555 123456", "item1.X-AB-LABEL" => "Walkie Talkie", "ADR" => [ "", "", ["My Street", "Left Side", "Second Shack"], "Hometown", "PA", "18252", "U.S.A", ], ]); $card->add('BDAY', '1979-12-25', ['VALUE' => 'DATE', 'X-PARAM' => [1, 2]]); $card->add('BDAY', '1979-12-25T02:00:00', ['VALUE' => 'DATE-TIME']); $card->add('X-TRUNCATED', '--1225', ['VALUE' => 'DATE']); $card->add('X-TIME-LOCAL', '123000', ['VALUE' => 'TIME']); $card->add('X-TIME-UTC', '12:30:00Z', ['VALUE' => 'TIME']); $card->add('X-TIME-OFFSET', '12:30:00-08:00', ['VALUE' => 'TIME']); $card->add('X-TIME-REDUCED', '23', ['VALUE' => 'TIME']); $card->add('X-TIME-TRUNCATED', '--30', ['VALUE' => 'TIME']); $card->add('X-KARMA-POINTS', '42', ['VALUE' => 'INTEGER']); $card->add('X-GRADE', '1.3', ['VALUE' => 'FLOAT']); $card->add('TZ', '-0500', ['VALUE' => 'UTC-OFFSET']); $expected = [ "vcard", [ [ "version", new \StdClass(), "text", "4.0" ], [ "prodid", new \StdClass(), "text", "-//Sabre//Sabre VObject " . Version::VERSION . "//EN", ], [ "uid", new \StdClass(), "text", "foo", ], [ "bday", new \StdClass(), "date-and-or-time", "1985-04-07", ], [ "bday", (object)[ 'x-param' => [1,2], ], "date", "1979-12-25", ], [ "bday", new \StdClass(), "date-time", "1979-12-25T02:00:00", ], [ "rev", new \StdClass(), "timestamp", "1995-10-31T22:27:10Z", ], [ "lang", new \StdClass(), "language-tag", "nl", ], [ "n", new \StdClass(), "text", ["Last", "First", "Middle", "", ""], ], [ "tel", (object)[ "group" => "item1", ], "text", "+1 555 123456", ], [ "x-ab-label", (object)[ "group" => "item1", ], "unknown", "Walkie Talkie", ], [ "adr", new \StdClass(), "text", [ "", "", ["My Street", "Left Side", "Second Shack"], "Hometown", "PA", "18252", "U.S.A", ], ], [ "x-truncated", new \StdClass(), "date", "--12-25", ], [ "x-time-local", new \StdClass(), "time", "12:30:00" ], [ "x-time-utc", new \StdClass(), "time", "12:30:00Z" ], [ "x-time-offset", new \StdClass(), "time", "12:30:00-08:00" ], [ "x-time-reduced", new \StdClass(), "time", "23" ], [ "x-time-truncated", new \StdClass(), "time", "--30" ], [ "x-karma-points", new \StdClass(), "integer", 42 ], [ "x-grade", new \StdClass(), "float", 1.3 ], [ "tz", new \StdClass(), "utc-offset", "-05:00", ], ], ]; $this->assertEquals($expected, $card->jsonSerialize()); } }