Using the Starter Application

The Getting Started part of this discussion will get you up an running with the Starter Application. If you are planning to use it at the basis of your own application the following steps may be helpful.

  1. The Problem
    • Fully articulate the business problem
    • Identify the parties who have an interest in the solution. List their requirements. Think of the parties as ‘actors’ and the requirements as ‘use cases’
    • Outline a solution, paying particular attention to the nouns. Think of nouns as Domain objects
  2. The Domain
    • Build a small number of Domain objects first, starting with those that are most central to the application
      • Specify the Domain object interfaces
      • Create the Domain object classes and add property names to $allowed
      • Create a proxy for each domain object
    • Setup collection handling for each Domain object
      • Specify the collection interfaces
      • Create the collection classes
      • Create a proxy for each collection
    • Implement public setters on Domain objects for all writable properties
    • Implement behaviour methods on Domain objects as required
    • Create a factory for each Domain object, overriding base methods as required
    • Create unit tests that cover Domain objects, factories, collections and proxies
  3. Data Mapper
    • Design the database
    • Configure the Zend DB adapter service
    • Declare mapper interfaces in Core\iMapper including method signatures
    • Create and implement Mapper classes
    • Create test data
    • Create unit tests that cover Mapper classes
  4. Service Layer
    • Group use cases based on related functionality
    • Create a Service Layer service for the main use case groups
    • Create a listener for each Service Layer service
    • Implement an action for each use case
    • Trigger events where required, and implement and bind handlers in listeners
    • Create tests that cover Service Layer classes
  5. Presentation Layer
    • Create controllers and views according to UI requirements, tools and approach
    • Implement controller actions to access Service Layer methods
    • Create functional tests with Selenium or other tool
  6. Iterate
    • Demonstrate your system to business stakeholders
    • Revisit each of the steps above, as many times as required, revising, improving, completing

Continuous integration and deployment will be valuable companions on the journey.