Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History
New Proposal Template
This page has been created from a template that uses "zones." To proceed:
  1. Edit the page
  2. Replace sample content within each zone-data tag with your own content
  3. Remove this notice
  4. Save the page
  5. When you are ready for community review, move this page to the Ready for Review section on the edit page.
No placeholders allowed!
Please do not create placeholders. Wait until you have sufficient content to replace all sample data in the proposal template before creating your proposal document.

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend_Nosql_Mongo Component Proposal

Proposed Component Name Zend_Nosql_Mongo
Developer Notes
Proposers Valentin Golev
Zend Liaison TBD
Revision 1.0 - 6 January 2010: Initial Draft. (wiki revision: 3)

Table of Contents

1. Overview

Zend_Nosql_Mongo is a namespace containing wrappers and adapters for PHP Mongo classes, intended to make them more handy, simple and compatible with other ZF classes, such as Zend_Paginator.

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will expose the entire MongoDB API
  • This component will expose even the API not supported by PHP driver if it is exposed by Mongo DB commands
  • This component will provide class for a Mongo Object.
    • In a mongo object will be only string, int, bool, double, null, array (of any of these types, recursively), Mongo Object, date, MongoID, binary, regexp and JS Code fields. See also Data Types in Mongo
    • Fields will be able to be accessed as a member variables, like $object->subObject->subObjField for { subObject : { subObjField : 17 } }.
  • This component will provide objects for individual documents as well as document collections
    • Document objects will allow arbitrary fields
    • Document objects will provide accessors for document IDs
    • Document objects will allow arbitrary fields
    • Document objects will be instances of a class which extends BSON Object
    • Document Collections will be iterable
    • Document Collections will be countable
    • Document Collections will allow adding and removing documents
    • Document Collections will allow retrieving documents by ID
    • Document Collections will allow prohibition of arbitrary fields
    • Document Collections will allow strong client-side typing of fields, like 'int' or 'int|array(int)|null'
  • This component will allow using GridFS for storing files
    • This component will be able to be used with Zend MVC
  • This component will provide a special object for Query
    • Query will be countable
    • Query will be iterable (by returning Cursor for iteration)
  • This component will provide a special object for Cursor, which is returned by executing Query
    • Cursor will be countable
    • Cursor will be iterable
  • This component will allow to set a specific class for documents in specific collections, as soon as it implements a special interface
    • Cursor and Collection will return instances of these specific classes instead of usual Document classes

4. Dependencies on Other Framework Components

  • Zend_Exception
  • Zend_Exception

5. Theory of Operation

The component is instantiated with a mind-link that ...

6. Milestones / Tasks

Describe some intermediate state of this component in terms of design notes, additional material added to this page, and / code. Note any significant dependencies here, such as, "Milestone #3 can not be completed until feature Foo has been added to ZF component XYZ." Milestones will be required for acceptance of future proposals. They are not hard, and many times you will only need to think of the first three below.

  • Milestone 1: design notes will be published here
  • Milestone 2: Working prototype checked into the incubator supporting use cases #1, #2, ...
  • Milestone 3: Working prototype checked into the incubator supporting use cases #3 and #4.
  • Milestone 4: Unit tests exist, work, and are checked into SVN.
  • Milestone 5: Initial documentation exists.

If a milestone is already done, begin the description with "[DONE]", like this:

  • Milestone #: [DONE] Unit tests ...

7. Class Index

  • Zend_Magic_Exception
  • Zend_Magic (factory class)
  • Zend_Magic_MindProbe
  • Zend_Magic_MindProbe_Intent
  • Zend_Magic_Action
  • Zend_Magic_CodeGen

8. Use Cases


... (see good use cases book)

9. Class Skeletons


Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.