{"issue":{"title":"Object Map Interface","user":{"login":"cspray","id":771345,"url":"https://api.github.com/users/cspray","gravatar_id":"0fd2816e78f6a04d5f8ce0aba1cb42e6","avatar_url":"https://secure.gravatar.com/avatar/0fd2816e78f6a04d5f8ce0aba1cb42e6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},"created_at":"2011-12-24T06:12:03Z","milestone":{"title":"SprayFire Data Structures","open_issues":2,"created_at":"2011-12-24T05:55:37Z","creator":{"login":"cspray","id":771345,"url":"https://api.github.com/users/cspray","gravatar_id":"0fd2816e78f6a04d5f8ce0aba1cb42e6","avatar_url":"https://secure.gravatar.com/avatar/0fd2816e78f6a04d5f8ce0aba1cb42e6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},"state":"open","due_on":null,"closed_issues":4,"number":4,"description":"Much like any application SprayFire has the need to store various data in specific data structures.  While wherever possible SprayFire attempts to utilize PHP implemented classes and methods there are some things that the framework will need that is not provided by the language or various extensions that we can safely have a dependency on.  Ultimately however, any user implemented data structure should be solving a *real* problem that can't otherwise be solved by the PHP library and common extensions.\r\n\r\n- Generic data storage objects should accept an array of already gathered data.\r\n- Generic data storage objects should have their data available via overloaded properties and also through array access notation.\r\n- Generic data storage objects should be countable.\r\n- Generic data storage objects should essentially be a wrapper around normal PHP `array` data structures.\r\n- An abstract class should be built that provides basic functionality for the necessary requirements.  The actual implementation for setting and removing a data member should be left to implementing classes.\r\n- Data storage for Objects should follow different rules.  There should be two basic structures that can hold objects: a `Set` that stores the objects in a numerically-indexed array and a `Map` that store objects in an associative-indexed array.  It is recommended that for `Set` implementations a `SplFixedArray` is used as it provides a more efficient implementation for numerically indexed arrays.","url":"https://api.github.com/repos/cspray/SprayFire/milestones/4"},"labels":[{"name":"roadmap","url":"https://api.github.com/repos/cspray/SprayFire/labels/roadmap","color":"0b02e1"}],"state":"closed","updated_at":"2011-12-28T02:07:19Z","id":2651878,"pull_request":{"patch_url":null,"html_url":null,"diff_url":null},"closed_at":"2011-12-28T02:07:19Z","html_url":"https://github.com/cspray/SprayFire/issues/19","body":"Much like the cspray/SprayFire#18 this data structure may only store framework objects implementing Object.  Ultimately this interface should be similar to the Set, with the one addition being that the keys used should be a string instead of a number, ultimately turning this into a key-value object store.\r\n\r\nAll functionality required by the `Set` is required by the `Map` with the exceptions:\r\n\r\n- Only strings are allowed to be used as keys, if a non-string value is used an exception should occur","number":19,"url":"https://api.github.com/repos/cspray/SprayFire/issues/19","comments":1,"assignee":{"login":"cspray","id":771345,"url":"https://api.github.com/users/cspray","gravatar_id":"0fd2816e78f6a04d5f8ce0aba1cb42e6","avatar_url":"https://secure.gravatar.com/avatar/0fd2816e78f6a04d5f8ce0aba1cb42e6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"}},"action":"closed"}