Your SlideShare is downloading. ×
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Zend_Tool: Practical use and Extending

3,628

Published on

Talk by Ralph Schindler of Zend, at ZendCon 2009

Talk by Ralph Schindler of Zend, at ZendCon 2009

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,628
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
144
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. Extending Zend_Tool By Ralph Schindler - Software Engineer
    • 2. Who Am I? • Ralph Schindler • Software Engineer on the Zend Framework Team at Zend • Email: ralph.schindler@zend.com • Website: http://ralphschindler.com/ • Project: http://framework.zend.com/ • @ralphschindler (http://twitter.com/ralphschindler) • Slides at: (provide link) • Code download link: (provide link) 2
    • 3. What’s Zend_Tool All About, Again? A quick review of where Zend_Tool came from, and where its going. 3
    • 4. What’s Zend_Tool All About, Again? • Rapid application development of ZF projects • Tooling framework Framework for building repeatable tooling tasks Lots of Built in Features Easily extensible (what this talk is about!) • B/c build systems only get us so far • Tools need to fit in human workflows: Tool creates project Human edits project Tool edits project Human edits project ... so on and so on ... 4
    • 5. What’s Zend_Tool All About, Again? • Zend_Tool in ZF 1.8 • Zend_Application in 1.8 • Built in project providers: create projects create controllers create actions create views create modules • Zend_Reflection & Zend_CodeGenerator in 1.8 5
    • 6. What’s Zend_Tool All About, Again? • New features in 1.10 New base loader (no more include_path scanning) Providers • DbAdapter configuration • DbTable creation based on database tables • Layout enabling and creation (Web client interface) 6
    • 7. System Overview Let’s have a stroll through the Zend_Tool architecture 7
    • 8. System Overview • Two main “components” Zend_Tool_Framework • The component responsible for dispatching tooling requests Zend_Tool_Project • The component responsible for exposing the “project specific” tooling capabilities • Auxiliary Components Zend_Reflection Zend_CodeGenerator 8
    • 9. System Overview • Zend_Tool_Framework Dispatch style framework, designed to abstract enough system internals to make extensibility easy • “Flexibility of the tooling dispatch over speed of tooling dispatch” Broken down into logical sub-parts: • Client • Client storage & configuration • Loader • Provider & Provider Repository • Manifest, Manifest Repository & Metadata • System (Built-in) Providers 9
    • 10. System Overview / Zend_Tool_Framework • Zend_Tool_Framework_Client Responsibilities: • Request object • Response object • Interactivity support • Setting up the system registry containing all required objects • The actual dispatch()-ing First implementation Zend_Tool_Framework_Client_Console 10
    • 11. System Overview / Zend_Tool_Framework • Zend_Tool_Framework_Client_Storage & Zend_Tool_Framework_Client_Config Responsibilities: • Allowing clients to specify configuration values for the system and providers to use • Allowing clients to store artifacts on the filesystem that the system and providers can consume – Custom profile files – Provider specific file formats and metadata 11
    • 12. System Overview / Zend_Tool_Framework • Zend_Tool_Framework_Loader Responsibilities: • Load files provided • Search for classes defined that implement: – Zend_Tool_Framework_Manifest_Interface – Zend_Tool_Framework_Provider_Interface Original loader Zend_Tool_Framework_Loader_IncludePathLoader New loader Zend_Tool_Framework_Loader_BasicLoader • Loads explicitly what it was asked to load 12
    • 13. System Overview / Zend_Tool_Framework • Zend_Tool_Framework_Provider & Provider Registry Responsibilities: • An interface for defining via a class, dispatch-able actions and “specialties” – (Similar to how Action Controllers define actions) • Registry to maintain instances of all providers available • Parsing of provider classes for dispatch-able “signatures” 13
    • 14. System Overview / Zend_Tool_Framework • Zend_Tool_Framework_Manifest & Manifest Repository Responsibilities: • Manifest can supply a collection of providers, actions and/or metadata • Registry provides a way to search for metadata in the manifest • Zend_Tool_Framework_Metadata Responsibilities: • Primary use case is to attach “data about data” to instance of a specific client, a specific provider, or action – ex: alternate names for each provider based on the command line naming scheme, OR short names (p for profile) 14
    • 15. System Overview • Zend_Tool_Project Problem: How to successfully model all the notions of a “project”? What is a “project”? • It is a tree of resources (some filesystem / some not) • For each resource we need to capturing it’s “nature” or “context” 2 main elements • Zend_Tool_Project_Profile which is a tree of Zend_Tool_Project_Profile_Resources • Zend_Tool_Project_Context 15
    • 16. System Overview / Zend_Tool_Project • Zend_Tool_Project_Profile Responsibilities: • loading, parsing, serializing and storing a profile file • Top most node in a “resource tree” • Zend_Tool_Project_Profile_Resource Responsibilities: • The class most responsible for the “where” question of project modeling • The class most responsible for implementing a node in a “resource tree” • Extends Resource_Container which is a RecursiveIterator (tree fundamentals) • Can create new Resources at specific locations • Can find resources by name and attribute sets • Each contains a Zend_Tool_Project_Context object 16
    • 17. System Overview / Zend_Tool_Project • Zend_Tool_Project_Context Responsibilities • The class most responsible for the “what” part of project modeling • Is assigned to a Zend_Tool_Project_Profile_Resource object – (This is known as “composition”) • Example contexts: – Controller file – View script directory – View script file – Model file – Action method – ... 17
    • 18. Building & extending for Zend_Tool With so many extension points, where does one start? 18
    • 19. Building & Extending For Zend_Tool • Path of least resistance when learning to extend: Implement a provider, and be able to call it Implement a manifest for the provider, and be able to call it Implement some metadata about provider, and be able to find it Add complex functionality to provider: • Selective interactivity (prompting the user) • Configuration • Use files from user storage area Implement a new client interface 19
    • 20. Building & Extending For Zend_Tool • Ensuring our environment is setup 20
    • 21. Building & Extending For Zend_Tool • Basic provider 21
    • 22. Building & Extending For Zend_Tool • Enter new provider in config file 22
    • 23. Building & Extending For Zend_Tool • Checking the provider is available in console help (zf --help) 23
    • 24. Building & Extending For Zend_Tool • Create a manifest for our provider • Notice we moved the provider inside the Tool namespace 24
    • 25. Building & Extending For Zend_Tool • Run the provider 25
    • 26. Building & Extending For Zend_Tool • Implement metadata attached to provider • (dynamic metadata) 26
    • 27. Building & Extending For Zend_Tool • Search for metadata 27
    • 28. Building & Extending For Zend_Tool • Add interactivity to provider • (screenshot) 28
    • 29. Building & Extending For Zend_Tool • Use the config file to retrieve a value • (screenshot) 29
    • 30. Building & Extending For Zend_Tool • Use the storage area to return a file • (screenshot) 30
    • 31. Building & Extending For Zend_Tool • Zend_Tool_Project extensions typical tasks Load existing profile Search for resources Create resources & contexts • Persist attributes Execute method on resource/contexts, such as create Store profile after changes 31
    • 32. Building & Extending For Zend_Tool • Code to examine to learn more Zend_Tool_Framework • Zend_Tool_Framework_Client & Zend_Tool_Framework_Registry Zend_Tool_Project • Zend_Tool_Project_Provider_* (specifically DbAdapter, DbTable) • Zend_Tool_Project_Context_* (specifically ControllerFile, ViewScriptFile, DbTableFile) Zend_Tool_CodeGenerator_Php • This is needed to generate, and regenerate code in most cases 32
    • 33. Building & Extending For Zend_Tool • Links to example files: (link here) • Link to manual & good articles: http://framework.zend.com/manual/en/zend.tool.framework.html (more) 33
    • 34. Thank You! Questions? Comments? 34

    ×