Trac

List of TODOS for Doctrine 2.0

  • Fix all the 2.0 tickets :)
  • Strip down Doctrine.php so it does not have any Doctrine logic in it. It needs to be as small as possible. Possibly just the getPath() method.
  • Add Doctrine_Autoload implementation to replace Doctrine::loadModels() and Doctrine::autoload().
  • Re-factor model behavior implementation. Combine Doctrine_Template and Doctrine_Generator in to one abstract class Doctrine_Behavior, or Doctrine_Behavior_Template, Doctrine_Behavior_Generator
  • After model behavior system is re-implemented, we must update all behaviors as necessary.
  • Make NestedSet? behavior more like the other behaviors.
  • Rename Doctrine_Record to Doctrine_Entity.
  • Re-factor Facade out of Doctrine.php, we need a central location for this, and each facade function will serve as a factory for returning instances of classes which performs functions for Doctrines. The classes should be chainable and have a fluid interface for configuring then executing.
  • Re-factor attributes/configurable. Move to string based attribute system?
  • Re-factor Doctrine_Cli and Doctrine_Task
  • Implement Doctrine_ClassMetaData yaml driver and caching for parsed yaml schemas.
  • Re-factor and cleanup Doctrine_Data
  • Rename Doctrine_Parser to Doctrine_File_Parser, re-factor and cleanup also.
  • Implement Doctrine_Log in core components.
  • Finish Doctrine_Migration_Diff
  • Be sure all non pdo Doctrine_Adapters are available and working for people who do not have PDO.
  • Refactor/rewrite relations, taking into account full support for composite keys.
  • Rewrite the UnitOfWork?. Should have different flush modes. Should track object changes (new/deletes/modified/..), queue dml operations and be able to commit changes in the correct order, maintaining referential integrity (using a topological sort).
  • [DBAL/ORM separation] : split Doctrine_Connection into Doctrine::ORM::EntityManager? (no longer singleton, one em works on one connection) and Doctrine::DBAL::Connection
  • Revisit the hydration algorithm, introducing new scalar hydration routines/modes.
  • Replace the old DQL parser entirely with the new one.
  • Address the inconstancies of Doctrine_Null usage
  • Turn lazy-loading off by default. It's mostly an anti-pattern in php orm. Instead provide a fetchMode option for relations with values none(default)/lazy(1.0 behavior)/eager
  • Redesign the Validation API. Main goals: Extensibility, Partial Validation, Loosely coupled with the Doctrine core (may end up as separate download).
  • Proposed package separation: Doctrine Core (DBAL+ORM, DBAL can be available as a separate download, too), Doctrine Validators (one package), Doctrine Migrations (one package), Doctrine Behaviors (each behavior in a separate package), Utilities? (one package?), Doctrine Search (one package, it's also a behavior but imho it is much more then that. It is partially implemented through a Behavior but can provide a much larger API with additional classes).
  • Make the Record/Entity constructor useable for users again, with one restriction: Entities must provide a no-arg constructor so all parameters the user adds to construct() must be optional.