{"action":"created","comment":{"url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/comments/34305277","id":34305277,"diff_hunk":"@@ -0,0 +1,337 @@\n+===============================\n+Persistence in Hippo and Phongo\n+===============================\n+\n+This document discusses the methods how compound structures (documents,\n+arrays, objects) are persisted through the drivers. And how they are brought\n+back into PHP land.\n+\n+Serialization to BSON\n+=====================\n+\n+Arrays\n+------\n+\n+If an array is a *packed array* — i.e. the keys start at 0 and are sequential\n+without gaps: **BSON array**. \n+\n+If the array is not packed — i.e. having associative (string) keys, the keys\n+don't start at 0, or when they are gaps:: **BSON object**\n+\n+Examples\n+~~~~~~~~\n+\n+These serialize as a BSON array::\n+\n+  [ 8, 5, 2, 3 ] => [ 8, 5, 2, 3 ]\n+  [ 0 => 4, 1 => 9 ] => [ 4, 9 ]\n+\n+\n+These serialize as a BSON document::\n+\n+  [ 0 => 1, 2 => 8, 3 => 12 ] => { \"0\" : 1, \"2\" : 8, \"3\" : 12 }\n+  [ \"foo\" => 42 ] => { \"foo\" : 42 }\n+\n+To discuss:\n+ \n+- This is one is tricky, as the internal order in PHP does not have sequential\n+  arrays::\n+\n+    [ 1 => 9, 0 => 10 ] => { \"1\" : 9, \"0\" => 10 }\n+\n+  I suggest we serialize this as a **BSON document**.\n+\n+\n+Objects\n+-------\n+\n+If an object is of the *stdClass*, serialize as a **BSON document**.\n+\n+If an object is of any other class, without implementing any special\n+interface, serialize as a **BSON document**. Keep only *public* properties,\n+and ignore *protected* and *private* properties.\n+\n+If an object is of a class that implements the ``MongoDB\\BSON\\Serializable``\n+interface, call ``bsonSerialize`` and used the returned associative array to\n+store as properties of a **BSON document**. Not returning an array is an error\n+and should throw an ``MongoDB\\Driver\\Exception\\UnexpectedValueException``\n+exception. It is valid to return a packed array, but it must also be stored as\n+a **BSON document**.\n+\n+If an object is of a class that implements the ``MongoDB\\BSON\\Persistable``\n+interface (which implies ``MongoDB\\BSON\\Serializable``), obtain the properties\n+in a similar way as in the previous paragraph, but *also* add an additional\n+property ``__pclass`` as a Binary value, with subtype ``0x80`` and as value\n+the fully qualified class name of the object that is being serialized.\n+\n+Examples\n+~~~~~~~~\n+\n+::\n+\n+  stdClass {\n+    public $foo => 42\n+  } => { 'foo' : 42 }\n+\n+  MyClass {\n+    public $foo => 42,\n+    protected $prot => \"wine\",\n+    private $fpr => \"cheese\"\n+  } => { 'foo' : 42 }\n+\n+  AnotherClass implements Serializable {\n+    public $foo => 42,\n+    protected $prot => \"wine\",\n+    private $fpr => \"cheese\"\n+    function bsonSerialize() : array {\n+        return [ 'foo' => $this->foo, 'prot' => $this->prot ];\n+    }\n+  } => { 'foo' : 42, 'prot' : \"wine\" }\n+\n+  UpperClass implements Persistable {\n+    public $foo => 42,\n+    protected $prot => \"wine\",\n+    private $fpr => \"cheese\"\n+    function bsonSerialize() : array {\n+        return [ 'foo' => $this->foo, 'prot' => $this->prot ];\n+    }\n+  } => { 'foo' : 42, 'prot' : \"wine\", '__pclass' : Binary(0x80, \"UpperClass\") }\n+\n+\n+Deserialization from BSON\n+=========================\n+\n+For compound types, there are three data types:\n+\n+- ``root``: refers to the top-level BSON document *only*\n+- ``document``: refers to nested BSON document *only*\n+- ``array``: refers to a BSON array\n+\n+Each of those three data types can be mapped against different PHP types. The\n+possible mapping values are:\n+\n+- *not set* or ``NULL`` — this is the default.\n+\n+  - A BSON array will be deserialized as a PHP ``array``.\n+  - A BSON document (root or nested) without ``__pclass`` property [1]_ becomes a\n+    PHP ``stdClass`` object, with each BSON document property becoming a\n+    public ``stdClass`` property.\n+  - A BSON document (root or nested) with ``__pclass`` property [1]_ becomes\n+    a PHP object of the class name as defined by the ``__pclass`` property.\n+\n+    If the named class implements the ``MongoDB\\BSON\\Unserializable``\n+    interface, then the properties of the BSON document, minus the\n+    ``__pclass`` property are sent as an associative array to the\n+    ``bsonUnserialize`` function to initialise the object's properties.\n+    \n+    If the named class does not implement the ``MongoDB\\BSON\\Unserializable``\n+    interface, then the object gets initialized with the properties\n+    **without** the ``__pclass`` property being one of them. It simply gets\n+    left out.\n+\n+    The rationale for the latter is because no explicit choice about whether\n+    to use ODM features has been made, it should not bail out because of an\n+    extra ``__pclass`` property. The behaviour is different if the data type\n+    was mapped to ``\"odm\"`` (see below).\n+\n+- ``\"array\"`` — turns a BSON array or BSON document into a PHP array.\n+  ``__pclass`` properties [1]_ are igored.\n+\n+- ``\"object\"`` or ``\"stdClass\"`` — turns a BSON array or BSON document into a\n+  ``stdClass`` object. There will be no special treatment of a ``__pclass``\n+  property [1]_, buy it should **not** be set as property in the returned\n+  object.\n+\n+- ``\"odm\"`` — uses the class name set in the ``__pclass`` property of a BSON\n+  array or BSON document to determine the class name of the created object.\n+\n+  The properties of the BSON document, minus the ``__pclass`` property are\n+  sent as an associative array to the ``bsonUnserialize`` function to initialise\n+  the object's properties.\n+\n+  Remarks:\n+\n+  - If the ``__pclass`` property is not present [1]_, this throws the\n+    ``MongoDB\\Driver\\Exception\\UnexpectedValueException`` exception with a\n+    message indicating the special class marker could not be found.\n+\n+  - If the class as determined by the ``__pclass`` property does not implement\n+    the ``MongoDB\\BSON\\Persistable`` interface, throw an\n+    ``MongoDB\\Driver\\Exception\\UnexpectedValueException`` exception with a\n+    message indicating that the named class does not implement the required\n+    interface.\n+\n+- ``any other string`` — defines the class name that the BSON array or BSON\n+  object should be deserialized at.\n+\n+  If the class implements the ``MongoDB\\BSON\\Unserializable`` interface, then","path":"serialization.rst","position":167,"original_position":167,"commit_id":"d1fa9c4613facd0861b94aea25e6d8c5baedb948","original_commit_id":"d1fa9c4613facd0861b94aea25e6d8c5baedb948","user":{"login":"derickr","id":208074,"avatar_url":"https://avatars.githubusercontent.com/u/208074?v=3","gravatar_id":"","url":"https://api.github.com/users/derickr","html_url":"https://github.com/derickr","followers_url":"https://api.github.com/users/derickr/followers","following_url":"https://api.github.com/users/derickr/following{/other_user}","gists_url":"https://api.github.com/users/derickr/gists{/gist_id}","starred_url":"https://api.github.com/users/derickr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/derickr/subscriptions","organizations_url":"https://api.github.com/users/derickr/orgs","repos_url":"https://api.github.com/users/derickr/repos","events_url":"https://api.github.com/users/derickr/events{/privacy}","received_events_url":"https://api.github.com/users/derickr/received_events","type":"User","site_admin":false},"body":"Yeah, don't call your class \"ODM\" (or \"object\" )\r\n\r\n```\r\nderick@whisky:~ $ php -r 'class object {} ; $a = new object(); var_dump( $a );'\r\nclass object#1 (0) {\r\n}\r\n```","created_at":"2015-07-09T21:22:43Z","updated_at":"2015-07-09T21:22:43Z","html_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype/pull/6#discussion_r34305277","pull_request_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6","_links":{"self":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/comments/34305277"},"html":{"href":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype/pull/6#discussion_r34305277"},"pull_request":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6"}}},"pull_request":{"url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6","id":39577713,"html_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype/pull/6","diff_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype/pull/6.diff","patch_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype/pull/6.patch","issue_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/6","number":6,"state":"open","locked":false,"title":"Added draft spec on how to serialize and deserialize","user":{"login":"derickr","id":208074,"avatar_url":"https://avatars.githubusercontent.com/u/208074?v=3","gravatar_id":"","url":"https://api.github.com/users/derickr","html_url":"https://github.com/derickr","followers_url":"https://api.github.com/users/derickr/followers","following_url":"https://api.github.com/users/derickr/following{/other_user}","gists_url":"https://api.github.com/users/derickr/gists{/gist_id}","starred_url":"https://api.github.com/users/derickr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/derickr/subscriptions","organizations_url":"https://api.github.com/users/derickr/orgs","repos_url":"https://api.github.com/users/derickr/repos","events_url":"https://api.github.com/users/derickr/events{/privacy}","received_events_url":"https://api.github.com/users/derickr/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-07-09T12:32:15Z","updated_at":"2015-07-09T21:22:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fcf1e51ed5df1e700623bc4ea3f5a2563520a69d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6/commits","review_comments_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6/comments","review_comment_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/comments{/number}","comments_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/6/comments","statuses_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/statuses/d1fa9c4613facd0861b94aea25e6d8c5baedb948","head":{"label":"10gen-labs:serialization","ref":"serialization","sha":"d1fa9c4613facd0861b94aea25e6d8c5baedb948","user":{"login":"10gen-labs","id":2118794,"avatar_url":"https://avatars.githubusercontent.com/u/2118794?v=3","gravatar_id":"","url":"https://api.github.com/users/10gen-labs","html_url":"https://github.com/10gen-labs","followers_url":"https://api.github.com/users/10gen-labs/followers","following_url":"https://api.github.com/users/10gen-labs/following{/other_user}","gists_url":"https://api.github.com/users/10gen-labs/gists{/gist_id}","starred_url":"https://api.github.com/users/10gen-labs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/10gen-labs/subscriptions","organizations_url":"https://api.github.com/users/10gen-labs/orgs","repos_url":"https://api.github.com/users/10gen-labs/repos","events_url":"https://api.github.com/users/10gen-labs/events{/privacy}","received_events_url":"https://api.github.com/users/10gen-labs/received_events","type":"Organization","site_admin":false},"repo":{"id":27442261,"name":"mongo-hhvm-driver-prototype","full_name":"10gen-labs/mongo-hhvm-driver-prototype","owner":{"login":"10gen-labs","id":2118794,"avatar_url":"https://avatars.githubusercontent.com/u/2118794?v=3","gravatar_id":"","url":"https://api.github.com/users/10gen-labs","html_url":"https://github.com/10gen-labs","followers_url":"https://api.github.com/users/10gen-labs/followers","following_url":"https://api.github.com/users/10gen-labs/following{/other_user}","gists_url":"https://api.github.com/users/10gen-labs/gists{/gist_id}","starred_url":"https://api.github.com/users/10gen-labs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/10gen-labs/subscriptions","organizations_url":"https://api.github.com/users/10gen-labs/orgs","repos_url":"https://api.github.com/users/10gen-labs/repos","events_url":"https://api.github.com/users/10gen-labs/events{/privacy}","received_events_url":"https://api.github.com/users/10gen-labs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype","description":"MongoDB HHVM driver (experimental)","fork":false,"url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype","forks_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/forks","keys_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/keys{/key_id}","collaborators_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/teams","hooks_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/hooks","issue_events_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/events{/number}","events_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/events","assignees_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/assignees{/user}","branches_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/branches{/branch}","tags_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/tags","blobs_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/refs{/sha}","trees_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/trees{/sha}","statuses_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/statuses/{sha}","languages_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/languages","stargazers_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/stargazers","contributors_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/contributors","subscribers_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/subscribers","subscription_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/subscription","commits_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/commits{/sha}","git_commits_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/commits{/sha}","comments_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/comments{/number}","issue_comment_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/comments{/number}","contents_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/contents/{+path}","compare_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/compare/{base}...{head}","merges_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/merges","archive_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/downloads","issues_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues{/number}","pulls_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls{/number}","milestones_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/milestones{/number}","notifications_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/labels{/name}","releases_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/releases{/id}","created_at":"2014-12-02T16:44:52Z","updated_at":"2015-06-23T15:59:17Z","pushed_at":"2015-07-09T19:57:23Z","git_url":"git://github.com/10gen-labs/mongo-hhvm-driver-prototype.git","ssh_url":"git@github.com:10gen-labs/mongo-hhvm-driver-prototype.git","clone_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype.git","svn_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype","homepage":"","size":5004,"stargazers_count":5,"watchers_count":5,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":7,"forks":3,"open_issues":7,"watchers":5,"default_branch":"master"}},"base":{"label":"10gen-labs:master","ref":"master","sha":"2999ead0979abe6467a3670a714929f6de4e47c1","user":{"login":"10gen-labs","id":2118794,"avatar_url":"https://avatars.githubusercontent.com/u/2118794?v=3","gravatar_id":"","url":"https://api.github.com/users/10gen-labs","html_url":"https://github.com/10gen-labs","followers_url":"https://api.github.com/users/10gen-labs/followers","following_url":"https://api.github.com/users/10gen-labs/following{/other_user}","gists_url":"https://api.github.com/users/10gen-labs/gists{/gist_id}","starred_url":"https://api.github.com/users/10gen-labs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/10gen-labs/subscriptions","organizations_url":"https://api.github.com/users/10gen-labs/orgs","repos_url":"https://api.github.com/users/10gen-labs/repos","events_url":"https://api.github.com/users/10gen-labs/events{/privacy}","received_events_url":"https://api.github.com/users/10gen-labs/received_events","type":"Organization","site_admin":false},"repo":{"id":27442261,"name":"mongo-hhvm-driver-prototype","full_name":"10gen-labs/mongo-hhvm-driver-prototype","owner":{"login":"10gen-labs","id":2118794,"avatar_url":"https://avatars.githubusercontent.com/u/2118794?v=3","gravatar_id":"","url":"https://api.github.com/users/10gen-labs","html_url":"https://github.com/10gen-labs","followers_url":"https://api.github.com/users/10gen-labs/followers","following_url":"https://api.github.com/users/10gen-labs/following{/other_user}","gists_url":"https://api.github.com/users/10gen-labs/gists{/gist_id}","starred_url":"https://api.github.com/users/10gen-labs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/10gen-labs/subscriptions","organizations_url":"https://api.github.com/users/10gen-labs/orgs","repos_url":"https://api.github.com/users/10gen-labs/repos","events_url":"https://api.github.com/users/10gen-labs/events{/privacy}","received_events_url":"https://api.github.com/users/10gen-labs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype","description":"MongoDB HHVM driver (experimental)","fork":false,"url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype","forks_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/forks","keys_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/keys{/key_id}","collaborators_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/teams","hooks_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/hooks","issue_events_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/events{/number}","events_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/events","assignees_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/assignees{/user}","branches_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/branches{/branch}","tags_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/tags","blobs_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/refs{/sha}","trees_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/trees{/sha}","statuses_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/statuses/{sha}","languages_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/languages","stargazers_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/stargazers","contributors_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/contributors","subscribers_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/subscribers","subscription_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/subscription","commits_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/commits{/sha}","git_commits_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/git/commits{/sha}","comments_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/comments{/number}","issue_comment_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/comments{/number}","contents_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/contents/{+path}","compare_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/compare/{base}...{head}","merges_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/merges","archive_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/downloads","issues_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues{/number}","pulls_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls{/number}","milestones_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/milestones{/number}","notifications_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/labels{/name}","releases_url":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/releases{/id}","created_at":"2014-12-02T16:44:52Z","updated_at":"2015-06-23T15:59:17Z","pushed_at":"2015-07-09T19:57:23Z","git_url":"git://github.com/10gen-labs/mongo-hhvm-driver-prototype.git","ssh_url":"git@github.com:10gen-labs/mongo-hhvm-driver-prototype.git","clone_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype.git","svn_url":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype","homepage":"","size":5004,"stargazers_count":5,"watchers_count":5,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":7,"forks":3,"open_issues":7,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6"},"html":{"href":"https://github.com/10gen-labs/mongo-hhvm-driver-prototype/pull/6"},"issue":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/6"},"comments":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/issues/6/comments"},"review_comments":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6/comments"},"review_comment":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/pulls/6/commits"},"statuses":{"href":"https://api.github.com/repos/10gen-labs/mongo-hhvm-driver-prototype/statuses/d1fa9c4613facd0861b94aea25e6d8c5baedb948"}}}}