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
  3. Remove this notice
  4. Save the page
  5. When you are ready for review, remove the Under Construction notice
Under Construction
This proposal is under construction and is not ready for review.

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

Zend Framework: Zend_Yaml Component Proposal

Proposed Component Name Zend_Yaml
Developer Notes
Proposers Pádraic Brady
Revision 0.05 - 21 March 2007 - Draft In Progress (wiki revision: 3)

Table of Contents

1. Overview

YAML is a machine parsable data serialisation format for storing text, numerical data, arrays and more. It was designed for use with programming languages and has excellent support in Python, Perl and Ruby. Several C implementations exist and at least one supports a PHP extension. YAML is a commonly used format for data files such as those utilised for configuration as an alternative to XML or INI formats.

Zend_Yaml aims to implement YAML 1.1 support for the Zend Framework. In the absence of a core YAML extension for PHP, it offers YAML support in native PHP. This will include an LL(1) parser and lexer for the YAML format which drives the majority of functionality. The lexer will deconstruct a YAML string/file into parseable tokens which will allow the deserialisation of YAML data into native PHP types and vice versa.

It is expected to support as much of the YAML grammer as is feasible, with the notable exclusion of Unicode support. This will be omitted from initial versions but will be implemented once the requirements for Unicode support (given PHP's lack of) is more thoroughly assessed. In addition, Zend_Yaml would defer to any YAML C extension support if detected. It is currently unknown whether a PHP implementation would have 100% interoperability with such an extension though differences should be relatively minor (if not negligible).

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • Zend_Yaml must implement the YAML 1.1 specification (excluding Unicode support until a later version)
  • Zend_Yaml must support both string literal and file based loading

4. Dependencies on Other Framework Components

  • Zend_Exception

5. Theory of Operation

6. Milestones / Tasks

  • Milestone 1: Implement basic YAML loading without Unicode support
  • Milestone 2: Unit Tests and class refactoring
  • Milestone 3: Debugging and Use Case testing
  • Milestone 4: Documentation
  • Milestone 5: Adding Unicode support

7. Class Index

  • Zend_Yaml
  • Zend_Yaml_Lexer
  • Zend_Yaml_Parser
  • Zend_Yaml_Token
  • Zend_Yaml_SimpleKey
  • Zend_Yaml_Reader
  • Zend_Yaml_Exception
  • Various Zend_Yaml_Token subclasses to represent lexical tokens.

8. Use Cases


Load a YAML string directly.


Load a YAML file streamed from an fopen() resource.

9. Class Skeletons


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