Copyright © 2007, Zend Technologies Inc. ZEND_TOOL IN ZF 1.8 By Ralph Schindler
Nov 01, 2014
Copyright © 2007, Zend Technologies Inc.
ZEND_TOOL IN ZF 1.8 By Ralph Schindler
Overview
• Overview The Problem The Solution Obtaining Zend_Tool
• Basic Usage Zend_Tool usage OTB (out the box) Zend_CodeGenerator & Zend_Reflection
• Advanced Usage Extending Zend_Tool
| Jul-1-09 Overview | 2
“ OVERVIEW
What’s this thing all about?
| Jul-1-09 Overview | 3
Overview
• The Problem – all the buzzwords RAD – Rapid Application Development Code Generation
• The generation of code during “development time” that will run during “production time”
• Development time code generation is ALWAYS better than runtime introspection
Scaffolding • Templates • Meta programming • CRUD
| Jul-1-09 Overview | 4
Overview
• In a nutshell: “Zend_Tool is both RAD tools as well as a framework for
exposing your own set of tooling needs to the Zend_Tool user interface.”
• Main Classes & APIs: Zend_Tool_Framework Zend_Tool_Project
• Supporting Classes & APIs: Zend_CodeGenerator Zend_Reflection
| Jul-1-09 Overview | 5
Overview
• Download and go • SVN
Create a link to the proper runner (zf.sh/zf.bat) • Preferably in the system path
Add Zend Framework library to global include_path
• Zend Server • Pear Channel (http://pear.zfcampus.org/)
| Jul-1-09 Overview | 6
Overview
• How it works Zend_Tool_Framework looks for providers, by default, on the
include_path Zend_Tool_Project is consumed by Zend_Tool_Framework
• This allows Zend_Tool_Project to be only concerned with “project” problems
• This also allows Zend_Tool_Framework to focus on the problem of knowing which requests are good, and knowing how to dispatch said request
Zend_Tool_Framework provides a client to the user That client in 1.8 is the command line client
| Jul-1-09 Overview | 7
“ BASIC USAGE
So, how do I use this thing?
| Jul-1-09 Basic Usage | 8
Basic Usage
| Jul-1-09 Basic Usage | 9
Basic Usage
| Jul-1-09 Basic Usage | 10
Basic Usage
| Jul-1-09 Basic Usage | 11
Basic Usage
| Jul-1-09 Basic Usage | 12
Basic Usage
| Jul-1-09 Basic Usage | 13
Basic Usage
| Jul-1-09 Basic Usage | 14
Basic Usage
| Jul-1-09 Basic Usage | 15
Basic Usage
| Jul-1-09 Basic Usage | 16
Basic Usage
| Jul-1-09 Basic Usage | 17
Basic Usage
| Jul-1-09 Basic Usage | 18
“ ADVANCED USAGE
So, how do I extend this thing?
| Jul-1-09 Advanced Usage | 19
Advanced Usage
• Zend_Tool_Framework Architecture Registry
• A container for all of the Zend_Tool_Framework sub componets Providers
• The built in providers Loaders
• The component responsible for finding providers & manifests Manifest
• A dictionary of metadata to be used by clients and providers Client
• The subcomponent responsible for presenting the toolchain to the user as well as building and dispatching requests
| Jul-1-09 Advanced Usage | 20
Advanced Usage
• Zend_Tool_Project Architecture Project Profile
• The description of the project in terms as a tree structure of resources
Resource • A resources is a node in the “project profile tree” • Can be a single node, or a parent of a collection of nodes • Is further described by the “context” associated with it.
Providers • Set of providers responsible for project based capabilities
Context • An object that describes the role of any given resources.
| Jul-1-09 Advanced Usage | 21
Advanced Usage
• Zend_Reflection Extends the API of PHP’s Reflection class to handle some
missing functionality • Docblock introspection (ability to get tags and descriptions) • File introspection
| Jul-1-09 Advanced Usage | 22
Advanced Usage
• Zend_CodeGenerator Purpose is to generate OO code with an OO interface API very similar to Reflection API, but the purpose is exactly
the opposite generate() method produces Zend/PEAR standard compliant
object oriented code Target use case: Assisting RAD and facilitating iterative
development
| Jul-1-09 Advanced Usage | 23
Advanced Usage
• Iterative Development Use Zend_Tool to generate file & class Modify file with external tool
• Example: use studio to fill in the body of an Action Controllers action
Use Zend_Tool to modify file & class • Example: adding an action to an already generated and modifed
Action Controller
| Jul-1-09 Advanced Usage | 24
Advanced Usage
• Next slides are old demonstration • API still applicable, substitute Zend for ZendL
| Jul-1-09 Advanced Usage | 25
Advanced Usage
• Zend_CodeGenerator / Reflection example
| Jul-1-09 Advanced Usage | 26
Advanced Usage
• Zend_CodeGenerator / Reflection example
| Jul-1-09 Advanced Usage | 27
Advanced Usage
• Zend_CodeGenerator / Reflection example
| Jul-1-09 Advanced Usage | 28
Advanced Usage
• Zend_CodeGenerator / Reflection example
| Jul-1-09 Advanced Usage | 29
Advanced Usage
• Lets explore a simple problem: Db Table & Model Generation Start with a schema Generate Db Table Files Generate Model Files
| Jul-1-09 Advanced Usage | 30
Advanced Usage
| Jul-1-09 Advanced Usage | 31
Advanced Usage
| Jul-1-09 Advanced Usage | 32
• Files needed to facilitate this endeavor • (These are in the include_path)
Advanced Usage
| Jul-1-09 Advanced Usage | 33
Advanced Usage
| Jul-1-09 Advanced Usage | 34
• Start with the simpler Abstract & ModelProvider
Advanced Usage
| Jul-1-09 Advanced Usage | 35
Advanced Usage
| Jul-1-09 Advanced Usage | 36
Advanced Usage
| Jul-1-09 Advanced Usage | 37
Advanced Usage
| Jul-1-09 Advanced Usage | 38
Advanced Usage
| Jul-1-09 Advanced Usage | 39
Advanced Usage
| Jul-1-09 Advanced Usage | 40
Advanced Usage
| Jul-1-09 Advanced Usage | 41
Advanced Usage
| Jul-1-09 Advanced Usage | 42
• The more complex DbTable provider & generator • This will include some Zend_Application
integration
Advanced Usage
| Jul-1-09 Advanced Usage | 43
Advanced Usage
| Jul-1-09 Advanced Usage | 44
Advanced Usage
| Jul-1-09 Advanced Usage | 45
Advanced Usage
| Jul-1-09 Advanced Usage | 46
Advanced Usage
| Jul-1-09 Advanced Usage | 47
Advanced Usage
| Jul-1-09 Advanced Usage | 48
Advanced Usage
| Jul-1-09 Advanced Usage | 49
Advanced Usage
| Jul-1-09 Advanced Usage | 50
Advanced Usage
| Jul-1-09 Advanced Usage | 51
“ WRAPPING IT UP
What’s next? Wha’ts on the horizon?
| Jul-1-09 Advanced Usage | 52
Wrapping It Up
• Most immediately Code and slides published to my blog
• http://ralphschindler.com End of week a tutorial on DevZone
• Same code, only heavily documented to demonstrate what is going on
• Some additional functionality inside the code • Iterative examples
| Jul-1-09 Name of this section | 53
Wrapping It Up
• Whats to come in 1.9? A setup script Better include_path management New Providers!
• Model provider • DbTable provides
Custom profiles
• Whats on the TODO list? Importing of existing project (resource auto-detection) Web based client Zend Studio client
| Jul-1-09 Name of this section | 54
Wrapping It Up
• Questions?
| Jul-1-09 Name of this section | 55
Copyright © 2007, Zend Technologies Inc.
THANK YOU! Ralph Schindler [email protected] http://framework.zend.com/
| Jul-1-09 Name of this section | 56