Zend_Tool_Project exposes a rich set of functionality and
capabilities that make the task of creating new providers, specficially those targetting
project easier and more manageable.
This same concept applies to Zend Framework projects. In Zend Framework projects,
you have controllers, actions, views, models, databases and so on and so forth. In
terms of Zend_Tool, we need a way to track these types of
resources - thus Zend_Tool_Project.
Zend_Tool_Project is capable of tracking project resources
throughout the development of a project. So, for example, if in one command you
created a controller, and in the next command you wish to create an action within
that controller, Zend_Tool_Project is gonna have to
know about the controller file you created so that you can (in
the next action), be able to append that action to it. This is what keeps our
projects up to date and stateful.
Another important point to understand about projects is that typically, resources
are organized in a hierarchical fashion. With that in mind,
Zend_Tool_Project is capable of serializing the current
project into a internal representation that allows it to keep track of not only
what resources are part of a project at any given time, but
also where they are in relation to one another.
Project specific providers are created in the same fashion as plain framework
providers, with one exception: project providers must extend the
Zend_Tool_Project_Provider_Abstract. This class comes with
some significant functionality that helps developers load existing project, obtian
the profile object, and be able to search the profile, then later store any changes
to the current project profile.
<?php
class My_Component_HelloProvider
extends Zend_Tool_Project_Provider_Abstract
{
public function say()
{
$profile = $this->_loadExistingProfile();
/* ... do project stuff here */
$this->_storeProfile();
}
}




