Zend Framework 2 Documentation - ZF2 Packages

10 downloads 11289 Views 7MB Size Report
15 Apr 2014 ... Contents. 1 Overview. 1. 2 Installation. 3. 3 Getting Started with Zend Framework 2. 5. 3.1. Someassumptions .
Zend Framework 2 Documentation Release 2.3.1

Zend Technologies Ltd.

April 15, 2014

Contents

1

Overview

1

2

Installation

3

3

Getting Started with Zend Framework 2 3.1 Some assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 The tutorial application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 5 5

4

Getting started: A skeleton application 4.1 Using the Apache Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Using the Built-in PHP CLI Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 8 10 10

5

Routing and controllers

11

6

Create the controller 6.1 Initialise the view scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13 14

7

Database and models 7.1 The database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 The model files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Using ServiceManager to configure the table gateway and inject into the AlbumTable . 7.4 Back to the controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5 Listing albums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15 15 15 17 19 19

8

Styling and Translations

9

Forms and actions 9.1 Adding new albums . . . . . . . . . . . . . . . . . . . 9.2 Editing an album . . . . . . . . . . . . . . . . . . . . . 9.3 Deleting an album . . . . . . . . . . . . . . . . . . . . 9.4 Ensuring that the home page displays the list of albums .

10 Conclusion

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

23

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

25 25 30 32 34 35

i

11 Getting Started with Zend Framework 2 11.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37 37 38

12 A quick tour of the skeleton application 12.1 The dispatch cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43 43

13 The MyTaskList application 13.1 The Checklist module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 The Module class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47 47 50

14 The application’s pages 14.1 Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 The TaskController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3 The model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.4 Using Service Manager to configure the database credentials and inject into the controller

. . . .

51 51 52 53 56

15 Listing tasks 15.1 Redirect the home page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59 61

16 Styling

63

17 Adding new tasks

65

18 Editing a task

71

19 Deleting a task

75

20 Application Diagnostics

77

21 Step-by-step debugging

79

22 Conclusion

81

23 Zend Framework Tool (ZFTool) 23.1 Installation using Composer . . . . . . . 23.2 Manual installation . . . . . . . . . . . . 23.3 Without installation, using the PHAR file 23.4 Usage . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

83 83 83 83 84

24 Learning Dependency Injection 24.1 Very brief introduction to Di. . . . . . . . . . . . . . . 24.2 Simplest usage case (2 classes, one consumes the other) 24.3 Simplest Usage Case Without Type-hints . . . . . . . . 24.4 Simplest usage case with Compiled Definition . . . . . 24.5 Creating a precompiled definition for others to use . . . 24.6 Using Multiple Definitions From Multiple Sources . . . 24.7 Generating Service Locators . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

87 87 87 89 90 92 92 93

25 Unit Testing a Zend Framework 2 application 25.1 Setting up the tests directory . . . . . . . . . 25.2 Bootstrapping your tests . . . . . . . . . . . 25.3 Your first controller test . . . . . . . . . . . 25.4 A failing test case . . . . . . . . . . . . . . 25.5 Configuring the service manager for the tests 25.6 Testing actions with POST . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

97 97 98 100 101 102 103

ii

. . . .

. . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . . . .

25.7 Testing model entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 25.8 Testing model tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 25.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 26 Using the EventManager 111 26.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 26.2 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 26.3 Shared managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 27 Wildcards

115

28 Listener aggregates 28.1 Introspecting results . . . . . . . . . . . . . . . . . . . . 28.2 Short-circuiting listener execution . . . . . . . . . . . . . 28.3 Keeping it in order . . . . . . . . . . . . . . . . . . . . . 28.4 Custom event objects . . . . . . . . . . . . . . . . . . . . 28.5 Putting it together: Implementing a simple caching system 28.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

117 118 118 119 120 121 123

29 Advanced Configuration Tricks 29.1 System configuration . . . . . . . . 29.2 Module Configuration . . . . . . . 29.3 Configuration mapping table . . . . 29.4 Configuration Priority . . . . . . . 29.5 Manipulating merged configuration 29.6 Configuration merging workflow .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

125 125 129 130 130 130 131

30 Using Zend\Navigation in your Album Module 30.1 Preparation . . . . . . . . . . . . . . . . . 30.2 Setting Up Zend\Navigation . . . . . . . . 30.3 Configuring our Site Map . . . . . . . . . 30.4 Adding the Menu View Helper . . . . . . . 30.5 Adding Breadcrumbs . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

133 133 133 134 135 135

31 Using Zend\Paginator in your Album Module 31.1 Preparation . . . . . . . . . . . . . . . . 31.2 Modifying the AlbumTable . . . . . . . 31.3 Modifying the AlbumController . . . . . 31.4 Updating the View Script . . . . . . . . 31.5 Creating the Pagination Control Partial .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

137 137 140 141 141 142

. . . . . .

32 Using the PaginationControl View Helper

. . . . . .

. . . . . .

. . . . .

145

33 Setting up a database adapter 147 33.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 33.2 Basic setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 33.3 Setting a static adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 34 Migration from Zend Framework 1

149

35 Namespacing Old Classes 151 35.1 Namespacing a ZF1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 35.2 HOWTO Namespace Your Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 36 Running Zend Framework 2 and Zend Framework 1 in parallel 155 36.1 Use ZF2 in a ZF1 project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 iii

36.2 Use ZF1 in a ZF2 project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 36.3 Run ZF1 and ZF2 together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 37 Introduction to Zend\Authentication 37.1 Adapters . . . . . . . . . . . . 37.2 Results . . . . . . . . . . . . . 37.3 Identity Persistence . . . . . . . 37.4 Usage . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

159 159 160 161 164

38 Database Table Authentication 167 38.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 38.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 38.3 Advanced Usage: Persisting a DbTable Result Object . . . . . . . . . . . . . . . . . . . . . . . . . . 170 39 Digest Authentication 39.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39.2 Specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39.3 Identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

173 173 173 173

40 HTTP Authentication Adapter 40.1 Introduction . . . . . . . 40.2 Design Overview . . . . . 40.3 Configuration Options . . 40.4 Resolvers . . . . . . . . . 40.5 Basic Usage . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

175 175 175 176 176 177

41 LDAP Authentication 41.1 Introduction . . . . . . . . . . . . . 41.2 Usage . . . . . . . . . . . . . . . . . 41.3 The API . . . . . . . . . . . . . . . 41.4 Server Options . . . . . . . . . . . . 41.5 Collecting Debugging Messages . . . 41.6 Common Options for Specific Servers

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

179 179 179 181 182 184 184

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

42 Authentication Validator 187 42.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 42.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 43 Introduction to Zend\Barcode

189

44 Barcode creation using Zend\Barcode\Barcode class 191 44.1 Using Zend\Barcode\Barcode::factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 44.2 Drawing a barcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 44.3 Rendering a barcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 45 Zend\Barcode\Barcode Objects 195 45.1 Common Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 45.2 Common Additional Getters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 45.3 Description of shipped barcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 46 Zend\Barcode Renderers 205 46.1 Common Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 46.2 Zend\Barcode\Renderer\Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 46.3 Zend\Barcode\Renderer\Pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

iv

47 Zend\Cache\Storage\Adapter 47.1 Overview . . . . . . . . . . . . . . . 47.2 Quick Start . . . . . . . . . . . . . . 47.3 Basic Configuration Options . . . . . 47.4 The StorageInterface . . . . . . . . . 47.5 The AvailableSpaceCapableInterface 47.6 The TotalSpaceCapableInterface . . . 47.7 The ClearByNamespaceInterface . . 47.8 The ClearByPrefixInterface . . . . . 47.9 The ClearExpiredInterface . . . . . . 47.10 The FlushableInterface . . . . . . . . 47.11 The IterableInterface . . . . . . . . . 47.12 The OptimizableInterface . . . . . . 47.13 The TaggableInterface . . . . . . . . 47.14 The Apc Adapter . . . . . . . . . . . 47.15 The Dba Adapter . . . . . . . . . . . 47.16 The Filesystem Adapter . . . . . . . 47.17 The Memcached Adapter . . . . . . 47.18 The Memory Adapter . . . . . . . . 47.19 The WinCache Adapter . . . . . . . 47.20 The XCache Adapter . . . . . . . . . 47.21 The ZendServerDisk Adapter . . . . 47.22 The ZendServerShm Adapter . . . . 47.23 Examples . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

207 207 207 208 208 210 210 211 211 211 211 211 212 212 212 213 214 215 216 217 218 219 219 220

48 Zend\Cache\Storage\Capabilities 48.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48.2 Available Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

223 223 223 225

49 Zend\Cache\Storage\Plugin 49.1 Overview . . . . . . . . . . . . . 49.2 Quick Start . . . . . . . . . . . . 49.3 The ClearExpiredByFactor Plugin 49.4 The ExceptionHandler Plugin . . 49.5 The IgnoreUserAbort Plugin . . . 49.6 The OptimizeByFactor Plugin . . 49.7 The Serializer Plugin . . . . . . . 49.8 Available Methods . . . . . . . . 49.9 Examples . . . . . . . . . . . . .

227 227 227 228 228 228 228 229 229 230

. . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

50 Zend\Cache\Pattern 231 50.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 50.2 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 50.3 Available Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 51 Zend\Cache\Pattern\CallbackCache 51.1 Overview . . . . . . . . . . . . 51.2 Quick Start . . . . . . . . . . . 51.3 Configuration Options . . . . . 51.4 Available Methods . . . . . . . 51.5 Examples . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

233 233 233 233 234 234

52 Zend\Cache\Pattern\ClassCache 235 52.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 v

52.2 52.3 52.4 52.5

Quick Start . . . . . . Configuration Options Available Methods . . Examples . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

235 235 236 236

53 Zend\Cache\Pattern\ObjectCache 53.1 Overview . . . . . . . . . . . 53.2 Quick Start . . . . . . . . . . 53.3 Configuration Options . . . . 53.4 Available Methods . . . . . . 53.5 Examples . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

239 239 239 240 240 241

54 Zend\Cache\Pattern\OutputCache 54.1 Overview . . . . . . . . . . . 54.2 Quick Start . . . . . . . . . . 54.3 Configuration Options . . . . 54.4 Available Methods . . . . . . 54.5 Examples . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

243 243 243 243 243 244

55 Zend\Cache\Pattern\CaptureCache 55.1 Overview . . . . . . . . . . . . 55.2 Quick Start . . . . . . . . . . . 55.3 Configuration Options . . . . . 55.4 Available Methods . . . . . . . 55.5 Examples . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

245 245 245 246 246 247

56 Introduction to Zend\Captcha 249 56.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 57 Captcha Operation 251 57.1 The AdapterInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 57.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 58 CAPTCHA Adapters 58.1 Zend\Captcha\AbstractWord 58.2 Zend\Captcha\Dumb . . . . 58.3 Zend\Captcha\Figlet . . . . 58.4 Zend\Captcha\Image . . . . 58.5 Zend\Captcha\ReCaptcha .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

253 253 254 254 254 255

59 Introduction 257 59.1 Theory of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 60 ZendCodeGenerator Reference 261 60.1 Abstract Classes and Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 60.2 Concrete CodeGenerator Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 61 ZendCodeGenerator Examples

269

62 Introduction to Zend\Config 277 62.1 Using Zend\Config\Config with a Reader Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 62.2 Using Zend\Config\Config with a PHP Configuration File . . . . . . . . . . . . . . . . . . . . . . . 278 63 Theory of Operation

vi

279

64 Zend\Config\Reader 64.1 Zend\Config\Reader\Ini . 64.2 Zend\Config\Reader\Xml 64.3 Zend\Config\Reader\Json 64.4 Zend\Config\Reader\Yaml

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

281 281 282 284 285

65 Zend\Config\Writer 65.1 Zend\Config\Writer\Ini . . . . 65.2 Zend\Config\Writer\Xml . . . 65.3 Zend\Config\Writer\PhpArray 65.4 Zend\Config\Writer\Json . . . 65.5 Zend\Config\Writer\Yaml . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

287 287 288 289 290 290

66 Zend\Config\Processor 66.1 Zend\Config\Processor\Constant . 66.2 Zend\Config\Processor\Filter . . 66.3 Zend\Config\Processor\Queue . . 66.4 Zend\Config\Processor\Token . . 66.5 Zend\Config\Processor\Translator

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

293 293 294 294 295 295

. . . .

67 The Factory 297 67.1 Loading configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 67.2 Storing configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 68 Introduction to Zend\Console 299 68.1 Writing console routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 68.2 Handling console requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 68.3 Adding console usage info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 69 Console routes and routing 69.1 Router configuration . . . 69.2 Basic route . . . . . . . . 69.3 Catchall route . . . . . . . 69.4 Console routes cheat-sheet

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

305 305 306 310 311

70 Console-aware modules 313 70.1 Application banner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 70.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 70.3 Best practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 71 Console-aware action controllers 71.1 Handling console requests . . . . . . . . 71.2 Sending output to console . . . . . . . . 71.3 Are we in a console? . . . . . . . . . . . 71.4 Reading values from console parameters

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

323 323 325 326 327

72 Console adapters 331 72.1 Retrieving console adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 72.2 Using console adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 73 Console prompts 73.1 Confirm . . 73.2 Line . . . . 73.3 Char . . . 73.4 Select . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

335 336 336 337 338

vii

74 ZendConsoleGetopt 341 74.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 75 Declaring Getopt Rules 343 75.1 Declaring Options with the Short Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 75.2 Declaring Options with the Long Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 76 Fetching Options and Arguments 76.1 Handling Getopt Exceptions . . 76.2 Fetching Options by Name . . . 76.3 Reporting Options . . . . . . . 76.4 Fetching Non-option Arguments

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

345 345 346 346 346

77 Configuring Zend\Console\Getopt 77.1 Adding Option Rules . . . . . 77.2 Adding Help Messages . . . . 77.3 Adding Option Aliases . . . . 77.4 Adding Argument Lists . . . 77.5 Adding Configuration . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

349 349 349 350 350 351

. . . . .

78 Introduction to Zend\Crypt

353

79 Encrypt/decrypt using block ciphers

355

80 Key derivation function 357 80.1 Pbkdf2 adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 80.2 SaltedS2k adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 80.3 Scrypt adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 81 Password 361 81.1 Bcrypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 81.2 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 82 Public key cryptography 365 82.1 Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 82.2 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 83 Zend\Db\Adapter 83.1 Creating an Adapter - Quickstart . . . . . . . . . . . . . . . . . 83.2 Creating an Adapter Using Dependency Injection . . . . . . . . 83.3 Query Preparation Through Zend\Db\Adapter\Adapter::query() 83.4 Query Execution Through Zend\Db\Adapter\Adapter::query() . 83.5 Creating Statements . . . . . . . . . . . . . . . . . . . . . . . 83.6 Using the Driver Object . . . . . . . . . . . . . . . . . . . . . 83.7 Using The Platform Object . . . . . . . . . . . . . . . . . . . . 83.8 Using The Parameter Container . . . . . . . . . . . . . . . . . 83.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

371 371 372 372 373 373 373 375 376 377

84 Zend\Db\ResultSet 84.1 Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2 Zend\Db\ResultSet\ResultSet and Zend\Db\ResultSet\AbstractResultSet . . . . . . . . . . . . . . . . 84.3 Zend\Db\ResultSet\HydratingResultSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

379 379 380 380

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

85 Zend\Db\Sql 383 85.1 Zend\Db\Sql\Sql (Quickstart) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 85.2 Zend\Db\Sql’s Select, Insert, Update and Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 viii

85.3 85.4 85.5 85.6 85.7

Zend\Db\Sql\Select . . . . . . . . . . . . . . Zend\Db\Sql\Insert . . . . . . . . . . . . . . Zend\Db\Sql\Update . . . . . . . . . . . . . Zend\Db\Sql\Delete . . . . . . . . . . . . . Zend\Db\Sql\Where & Zend\Db\Sql\Having

86 Zend\Db\Sql\Ddl 86.1 Creating Tables . . . . . . . . . . . . 86.2 Altering Tables . . . . . . . . . . . . 86.3 Dropping Tables . . . . . . . . . . . 86.4 Executing DDL Statements . . . . . 86.5 Currently Supported Data Types . . . 86.6 Currently Supported Constraint Types

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

384 387 388 388 388

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

395 395 396 396 396 397 397

87 Zend\Db\TableGateway 399 87.1 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 87.2 TableGateway Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 88 Zend\Db\RowGateway 403 88.1 Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 88.2 ActiveRecord Style Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 89 Zend\Db\Metadata 405 89.1 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 90 Dumping Variables 409 90.1 Example of dump() method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 91 Introduction to Zend\Di 411 91.1 Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 91.2 Dependency Injection Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 92 Zend\Di Quickstart 93 Zend\Di Definition 93.1 DefinitionList . . . 93.2 RuntimeDefinition 93.3 CompilerDefinition 93.4 ClassDefinition . .

413

. . . .

417 417 417 418 419

94 Zend\Di InstanceManager 94.1 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.3 Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

421 421 422 423

95 Zend\Di Configuration

425

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

96 Zend\Di Debugging & Complex Use Cases 427 96.1 Debugging a DiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 96.2 Complex Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 97 Introduction to Zend\Dom

431

98 Zend\Dom\Query 433 98.1 Theory of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 98.2 Methods Available . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

ix

99 Introduction to Zend\Escaper 437 99.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 99.2 What Zend\Escaper is not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 100Theory of Operation 439 100.1 The Problem with Inconsistent Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 100.2 Why Contextual Escaping? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 101Configuring Zend\Escaper

443

102Escaping HTML 445 102.1 Examples of Bad HTML Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 102.2 Examples of Good HTML Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 103Escaping HTML Attributes 447 103.1 Examples of Bad HTML Attribute Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 103.2 Examples of Good HTML Attribute Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 104Escaping Javascript 451 104.1 Examples of Bad Javascript Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 104.2 Examples of Good Javascript Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 105Escaping Cascading Style Sheets 453 105.1 Examples of Bad CSS Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 105.2 Examples of Good CSS Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 106Escaping URLs 455 106.1 Examples of Bad URL Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 106.2 Examples of Good URL Escaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 107The EventManager 107.1 Overview . . . . . . . 107.2 Quick Start . . . . . . 107.3 Configuration Options 107.4 Available Methods . . 107.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

457 457 457 460 461 462

108Using Exceptions 467 108.1 Catching an Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 109Introduction to Zend\Feed 469 109.1 Reading RSS Feed Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 110Importing Feeds 471 110.1 Dumping the contents of a feed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 111Retrieving Feeds from Web Pages 473 111.1 Find Feed Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 112Consuming an RSS Feed 475 112.1 Reading a feed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 112.2 Get properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 113Consuming an Atom Feed 477 113.1 Basic Use of an Atom Feed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

x

114Consuming a Single Atom Entry 479 114.1 Reading a Single-Entry Atom Feed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 115Zend\Feed and Security 481 115.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 115.2 Filtering data using HTMLPurifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 115.3 Escaping data using Zend\Escaper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 116Zend\Feed\Reader\Reader 116.1 Introduction . . . . . . . . . . . . . . . . . . 116.2 Importing Feeds . . . . . . . . . . . . . . . . 116.3 Retrieving Underlying Feed and Entry Sources 116.4 Cache Support and Intelligent Requests . . . . 116.5 Locating Feed URIs from Websites . . . . . . 116.6 Attribute Collections . . . . . . . . . . . . . . 116.7 Retrieving Feed Information . . . . . . . . . . 116.8 Retrieving Entry/Item Information . . . . . . . 116.9 Extending Feed and Entry APIs . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

485 485 485 486 487 488 489 489 492 494

117Zend\Feed\Writer\Writer 117.1 Introduction . . . . . . . 117.2 Architecture . . . . . . . 117.3 Getting Started . . . . . . 117.4 Setting Feed Data Points . 117.5 Setting Entry Data Points

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

499 499 499 500 502 504

118Zend\Feed\PubSubHubbub 118.1 What is PubSubHubbub? . . . . . . . . 118.2 Architecture . . . . . . . . . . . . . . 118.3 Zend\Feed\PubSubHubbub\Publisher . 118.4 Zend\Feed\PubSubHubbub\Subscriber

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

507 507 507 508 509

119Zend\File\ClassFileLocator 119.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119.2 Available Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

515 515 515 515

120Introduction to Zend\Filter 120.1 What is a filter? . . . . 120.2 Basic usage of filters . 120.3 Using the StaticFilter . 120.4 Double filtering . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

517 517 517 518 518

121Standard Filter Classes 121.1 Alnum . . . . . . . . . . . 121.2 Alpha . . . . . . . . . . . . 121.3 BaseName . . . . . . . . . 121.4 Boolean . . . . . . . . . . . 121.5 Callback . . . . . . . . . . 121.6 Compress and Decompress . 121.7 Digits . . . . . . . . . . . . 121.8 Dir . . . . . . . . . . . . . 121.9 Encrypt and Decrypt . . . . 121.10HtmlEntities . . . . . . . . 121.11Int . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

521 521 522 523 523 526 527 532 533 533 539 541

. . . .

. . . .

xi

121.12Null . . . . . . 121.13NumberFormat 121.14PregReplace . 121.15RealPath . . . 121.16StringToLower 121.17StringToUpper 121.18StringTrim . . 121.19StripNewLines 121.20StripTags . . . 121.21UriNormalize .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

541 543 544 544 545 546 547 547 548 549

122Word Filters 122.1 CamelCaseToDash . . . . 122.2 CamelCaseToSeparator . 122.3 CamelCaseToUnderscore 122.4 DashToCamelCase . . . . 122.5 DashToSeparator . . . . . 122.6 DashToUnderscore . . . . 122.7 SeparatorToCamelCase . 122.8 SeparatorToDash . . . . . 122.9 SeparatorToSeparator . . 122.10UnderscoreToCamelCase 122.11UnderscoreToSeparator . 122.12UnderscoreToDash . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

551 551 551 552 552 553 553 554 554 555 556 556 557

123File Filter Classes 123.1 Decrypt . . . . 123.2 Encrypt . . . . 123.3 Lowercase . . 123.4 Rename . . . . 123.5 RenameUpload 123.6 Uppercase . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

559 559 559 559 559 561 563

. . . . . .

. . . . . . . . . .

. . . . . .

. . . . . . . . . .

. . . . . .

. . . . . . . . . .

. . . . . .

. . . . . . . . . .

. . . . . .

. . . . . .

124Filter Chains 565 124.1 Setting Filter Chain Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 124.2 Using the Plugin Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 125Zend\Filter\Inflector 125.1 Transforming MixedCase and camelCaseText to another format 125.2 Static Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.3 Filter Inflector Rules . . . . . . . . . . . . . . . . . . . . . . . 125.4 Setting Many Rules At Once . . . . . . . . . . . . . . . . . . . 125.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Using the StaticFilter

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

567 567 569 570 571 572 573

127Writing Filters 575 127.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 128Introduction

577

129Quick Start 579 129.1 Programmatic Form Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 129.2 Creation via Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 129.3 Factory-backed Form Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

xii

129.4 129.5 129.6 129.7 129.8 129.9

Validating Forms . . . . . Hinting to the Input Filter Binding an object . . . . . Rendering . . . . . . . . Validation Groups . . . . Using Annotations . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

585 586 588 589 592 593

130Form Collections 130.1 Creating Fieldsets . . . . . . . . . . . . . . 130.2 The Form Element . . . . . . . . . . . . . . 130.3 The Controller . . . . . . . . . . . . . . . . 130.4 The View . . . . . . . . . . . . . . . . . . . 130.5 Adding New Elements Dynamically . . . . . 130.6 Validation groups for fieldsets and collection

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

597 600 604 605 606 607 609

131File Uploading 131.1 Standard Example . . . . . . 131.2 File Post-Redirect-Get Plugin 131.3 HTML5 Multi-File Uploads . 131.4 Upload Progress . . . . . . . 131.5 Additional Info . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

613 613 616 618 619 623

132Advanced use of forms 132.1 Short names . . . . . . . . . . 132.2 Creating custom elements . . . 132.3 Handling dependencies . . . . . 132.4 The specific case of initializers .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

625 625 625 629 631

133Form Elements 133.1 Introduction . . . . 133.2 Element Base Class 133.3 Standard Elements . 133.4 HTML5 Elements .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

633 633 633 635 651

134Form View Helpers 134.1 Introduction . . . . . . . . . 134.2 Standard Helpers . . . . . . . 134.3 HTML5 Helpers . . . . . . . 134.4 File Upload Progress Helpers

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

665 665 665 679 683

. . . .

. . . .

. . . .

. . . .

135Zend\Http 685 135.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 135.2 Zend\Http Request, Response and Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 136The Request Class 136.1 Overview . . . . . . . 136.2 Quick Start . . . . . . 136.3 Configuration Options 136.4 Available Methods . . 136.5 Examples . . . . . . .

. . . . .

687 687 687 688 688 691

137The Response Class 137.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137.2 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137.3 Configuration Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

693 693 693 694

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

xiii

137.4 Available Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 137.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 138The Headers Class 138.1 Overview . . . . . . . . . . . . . . . . . . . 138.2 Quick Start . . . . . . . . . . . . . . . . . . 138.3 Configuration Options . . . . . . . . . . . . 138.4 Available Methods . . . . . . . . . . . . . . 138.5 Zend\Http\Header\HeaderInterface Methods 138.6 Zend\Http\Header\AbstractAccept Methods . 138.7 Zend\Http\Header\AbstractDate Methods . . 138.8 Zend\Http\Header\AbstractLocation Methods 138.9 List of HTTP Header Types . . . . . . . . . 138.10Examples . . . . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

699 699 699 700 700 702 702 703 703 704 709

139HTTP Client 139.1 Overview . . 139.2 Quick Start . 139.3 Configuration 139.4 Examples . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

711 711 711 712 713

140HTTP Client - Connection Adapters 140.1 Overview . . . . . . . . . . . . . . . . 140.2 The Socket Adapter . . . . . . . . . . 140.3 The Proxy Adapter . . . . . . . . . . . 140.4 The cURL Adapter . . . . . . . . . . . 140.5 The Test Adapter . . . . . . . . . . . . 140.6 Creating your own connection adapters

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

717 717 717 720 721 722 724

141HTTP Client - Advanced Usage 141.1 HTTP Redirections . . . . . . . . . . . . . . . . 141.2 Adding Cookies and Using Cookie Persistence . 141.3 Setting Custom Request Headers . . . . . . . . 141.4 File Uploads . . . . . . . . . . . . . . . . . . . 141.5 Sending Raw POST Data . . . . . . . . . . . . 141.6 HTTP Authentication . . . . . . . . . . . . . . 141.7 Sending Multiple Requests With the Same Client 141.8 Data Streaming . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

727 727 727 729 730 730 731 731 732

142HTTP Client - Static Usage 142.1 Overview . . . . . . . 142.2 Quick Start . . . . . . 142.3 Configuration Options 142.4 Available Methods . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

735 735 735 735 736

143Translating 143.1 Adding translations . 143.2 Supported formats . 143.3 Setting a locale . . . 143.4 Translating messages 143.5 Caching . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

737 737 738 738 738 738

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

144I18n View Helpers 739 144.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 144.2 CurrencyFormat Helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

xiv

144.3 144.4 144.5 144.6 144.7 144.8

DateFormat Helper . . . . NumberFormat Helper . . Plural Helper . . . . . . . Translate Helper . . . . . TranslatePlural Helper . . Abstract Translator Helper

145I18n Filters 145.1 Alnum . . . . 145.2 Alpha . . . . . 145.3 NumberFormat 145.4 NumberParse .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

741 742 744 745 746 747

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

749 749 750 751 751

146I18n Validators 147Float 147.1 147.2 147.3 147.4

753

Supported options for Zend\I18n\Validator\Float Simple float validation . . . . . . . . . . . . . . Localized float validation . . . . . . . . . . . . Int . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

148Introduction

755 755 755 755 756 759

149File Upload Input 763 149.1 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 150Introduction

765

151Basic Usage 767 151.1 Pretty-printing JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 152Advanced Usage 152.1 JSON Objects . . . . . . 152.2 Encoding PHP objects . . 152.3 Internal Encoder/Decoder 152.4 JSON Expressions . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

769 769 769 770 770

153XML to JSON conversion 771 153.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771 154Zend\Json\Server - JSON-RPC server 154.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.3 Advanced Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

773 773 773 775

155Introduction to Zend\Ldap 781 155.1 Theory of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 156API overview 785 156.1 Configuration / options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785 156.2 API Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 157Zend\Ldap\Ldap 789 157.1 Zend\Ldap\Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 158Zend\Ldap\Attribute

791

xv

159Zend\Ldap\Converter\Converter

793

160Zend\Ldap\Dn

795

161Zend\Ldap\Filter

799

162Zend\Ldap\Node

803

163Zend\Ldap\Node\RootDse 805 163.1 OpenLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 163.2 ActiveDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 163.3 eDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808 164Zend\Ldap\Node\Schema 811 164.1 OpenLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 164.2 ActiveDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 165Zend\Ldap\Ldif\Encoder

815

166Usage Scenarios 817 166.1 Authentication scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 166.2 Basic CRUD operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 166.3 Extended operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819 167Tools 167.1 Creation and modification of DN strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167.2 Using the filter API to create search filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167.3 Modify LDAP entries using the Attribute API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

821 821 821 821

168Object-oriented access to the LDAP tree using Zend\Ldap\Node 168.1 Basic CRUD operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168.2 Extended operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168.3 Tree traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

823 823 823 823

169Getting information from the LDAP server 825 169.1 RootDSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 169.2 Schema Browsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 170Serializing LDAP data to and from LDIF 827 170.1 Serialize a LDAP entry to LDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 170.2 Deserialize a LDIF string into a LDAP entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828 171The AutoloaderFactory 171.1 Overview . . . . . . . 171.2 Quick Start . . . . . . 171.3 Configuration Options 171.4 Available Methods . . 171.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

831 831 831 832 832 832

172The StandardAutoloader 172.1 Overview . . . . . . . 172.2 Quick Start . . . . . . 172.3 Configuration Options 172.4 Available Methods . . 172.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

833 833 834 835 835 836

xvi

173The ClassMapAutoloader 173.1 Overview . . . . . . . 173.2 Quick Start . . . . . . 173.3 Configuration Options 173.4 Available Methods . . 173.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

837 837 837 838 838 839

174The ModuleAutoloader 174.1 Overview . . . . . . . 174.2 Quickstart . . . . . . 174.3 Configuration Options 174.4 Available Methods . . 174.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

841 841 841 841 842 842

175The SplAutoloader Interface 175.1 Overview . . . . . . . . 175.2 Quick Start . . . . . . . 175.3 Configuration Options . 175.4 Available Methods . . . 175.5 Examples . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

843 843 843 844 844 845

176The PluginClassLoader 176.1 Overview . . . . . . . 176.2 Quick Start . . . . . . 176.3 Configuration Options 176.4 Available Methods . . 176.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

847 847 847 848 848 849

177The ShortNameLocator Interface 177.1 Overview . . . . . . . . . . . 177.2 Quick Start . . . . . . . . . . 177.3 Configuration Options . . . . 177.4 Available Methods . . . . . . 177.5 Examples . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

853 853 853 854 854 854

178The PluginClassLocator interface 178.1 Overview . . . . . . . . . . . 178.2 Quick Start . . . . . . . . . . 178.3 Configuration Options . . . . 178.4 Available Methods . . . . . . 178.5 Examples . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

855 855 855 855 855 856

. . . . .

179The Class Map Generator utility: bin/classmap_generator.php 857 179.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 179.2 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 179.3 Configuration Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 180Zend\Log 180.1 Overview . . . . . . . . . 180.2 Creating a Log . . . . . . 180.3 Logging Messages . . . . 180.4 Destroying a Log . . . . . 180.5 Using Built-in Priorities . 180.6 Understanding Log Events 180.7 Log PHP Errors . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

859 859 859 860 860 860 861 861

xvii

181Writers 181.1 Writing to Streams . . . 181.2 Writing to Databases . . 181.3 Writing to FirePHP . . . 181.4 Stubbing Out the Writer 181.5 Testing with the Mock . 181.6 Compositing Writers . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

863 863 864 865 865 865 866

182Filters 867 182.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 182.2 Available filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 183Formatters 183.1 Simple Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2 Formatting to XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Formatting to FirePhp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

869 869 870 870

184Introduction to Zend\Mail 871 184.1 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 184.2 Configuring the default sendmail transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872 185Zend\Mail\Message 185.1 Overview . . . . . . . 185.2 Quick Start . . . . . . 185.3 Configuration Options 185.4 Available Methods . . 185.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

873 873 873 875 875 878

186Zend\Mail\Transport 186.1 Overview . . . . . . . 186.2 Quick Start . . . . . . 186.3 Configuration Options 186.4 Available Methods . . 186.5 Examples . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

879 879 879 880 881 881

187Zend\Mail\Transport\SmtpOptions 187.1 Overview . . . . . . . . . . . . 187.2 Quick Start . . . . . . . . . . . 187.3 Configuration Options . . . . . 187.4 Available Methods . . . . . . . 187.5 Examples . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

883 883 883 885 885 886

188Zend\Mail\Transport\FileOptions 188.1 Overview . . . . . . . . . . . 188.2 Quick Start . . . . . . . . . . 188.3 Configuration Options . . . . 188.4 Available Methods . . . . . . 188.5 Examples . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

887 887 887 887 888 888

. . . . .

189Introduction to Zend\Math 889 189.1 Random number generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889 189.2 Big integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890 190Overview 893 190.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893

xviii

190.2 Theory of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894 191Memory Manager 895 191.1 Creating a Memory Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895 191.2 Managing Memory Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895 191.3 Memory Manager Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896 192Memory Objects 192.1 Movable . . . . . . . . . . . . . . 192.2 Locked . . . . . . . . . . . . . . . 192.3 Memory container ‘value’ property 192.4 Memory container interface . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

899 899 899 899 900

193Zend\Mime 903 193.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 193.2 Static Methods and Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 193.3 Instantiating Zend\Mime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 194Zend\Mime\Message 194.1 Introduction . . . . . . . . . . . . . . . . . . . . . . 194.2 Instantiation . . . . . . . . . . . . . . . . . . . . . . 194.3 Adding MIME Parts . . . . . . . . . . . . . . . . . . 194.4 Boundary handling . . . . . . . . . . . . . . . . . . . 194.5 Parsing a string to create a Zend\Mime\Message object 194.6 Available methods . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

905 905 905 905 905 906 906

195Zend\Mime\Part 195.1 Introduction . . . . . . . . . . . . . . . . . . . . 195.2 Instantiation . . . . . . . . . . . . . . . . . . . . 195.3 Methods for rendering the message part to a string 195.4 Available methods . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

907 907 907 907 908

. . . .

. . . .

196Introduction to the Module System 909 196.1 The autoload_*.php Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910 197The Module Manager 911 197.1 Module Manager Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911 197.2 Module Manager Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912 198The Module Class 198.1 A Minimal Module . . . . . . . 198.2 A Typical Module Class . . . . 198.3 The “loadModules.post” Event 198.4 The MVC “bootstrap” Event . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

915 915 915 916 917

199The Module Autoloader 919 199.1 Module Autoloader Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919 199.2 Non-Standard / Explicit Module Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920 199.3 Packaging Modules with Phar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 200Best Practices when Creating Modules 200.1 Keep the init() and onBootstrap() methods lightweight 200.2 Do not perform writes within a module . . . . . . . . . . . . . 200.3 Utilize a vendor prefix for module names . . . . . . . . . . . . 200.4 Utilize a module prefix for service names . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

923 923 923 923 924

xix

201Introduction to the MVC Layer 201.1 Basic Application Structure . . . . . 201.2 Basic Module Structure . . . . . . . 201.3 Bootstrapping an Application . . . . 201.4 Bootstrapping a Modular Application 201.5 Conclusion . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

925 926 926 928 930 931

202Quick Start 202.1 Install the Zend Skeleton Application . 202.2 Create a New Module . . . . . . . . . 202.3 Update the Module Class . . . . . . . . 202.4 Create a Controller . . . . . . . . . . . 202.5 Create a View Script . . . . . . . . . . 202.6 Create a Route . . . . . . . . . . . . . 202.7 Tell the Application About our Module 202.8 Test it Out! . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

933 933 934 934 935 936 936 938 939

203Default Services 203.1 Theory of Operation . . . . . . . . 203.2 ServiceManager . . . . . . . . . . 203.3 Abstract Factories . . . . . . . . . 203.4 Plugin Managers . . . . . . . . . . 203.5 ViewManager . . . . . . . . . . . . 203.6 Application Configuration Options 203.7 Default Configuration Options . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

941 941 941 946 948 949 950 951

204Routing 204.1 Router Types . . . . . . . 204.2 HTTP Route Types . . . . 204.3 HTTP Routing Examples 204.4 Console Route Types . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

955 957 957 963 966

205The MvcEvent 205.1 Order of events . . . . . . . . . . . . . . . 205.2 MvcEvent::EVENT_BOOTSTRAP . . . . 205.3 MvcEvent::EVENT_ROUTE . . . . . . . 205.4 MvcEvent::EVENT_DISPATCH . . . . . 205.5 MvcEvent::EVENT_DISPATCH_ERROR 205.6 MvcEvent::EVENT_RENDER . . . . . . 205.7 MvcEvent::EVENT_RENDER_ERROR . 205.8 MvcEvent::EVENT_FINISH . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

967 968 968 969 970 971 973 973 974

. . . .

. . . .

. . . .

. . . .

. . . .

206The SendResponseEvent 977 206.1 Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 206.2 Triggerers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 207Available Controllers 979 207.1 Common Interfaces Used With Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 207.2 The AbstractActionController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981 207.3 The AbstractRestfulController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982 208Controller Plugins 985 208.1 AcceptableViewModelSelector Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985 208.2 FlashMessenger Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986 208.3 Forward Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988

xx

208.4 Identity Plugin . . . . . . . . 208.5 Layout Plugin . . . . . . . . 208.6 Params Plugin . . . . . . . . 208.7 Post/Redirect/Get Plugin . . . 208.8 File Post/Redirect/Get Plugin 208.9 Redirect Plugin . . . . . . . . 208.10Url Plugin . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

989 990 990 991 991 992 993

209Examples 995 209.1 Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995 209.2 Bootstrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996 210Introduction to Zend\Navigation 999 210.1 Pages and Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999 210.2 View Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000 211Quick Start

1001

212Pages 212.1 Common page features . . . . . . . . 212.2 Zend\Navigation\Page\Mvc . . . . . 212.3 Zend\Navigation\Page\Uri . . . . . . 212.4 Creating custom page types . . . . . 212.5 Creating pages using the page factory

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1003 1003 1005 1008 1008 1010

213Containers 213.1 Creating containers 213.2 Adding pages . . . 213.3 Removing pages . 213.4 Finding pages . . . 213.5 Iterating containers 213.6 Other operations .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1013 1013 1019 1020 1021 1023 1023

214View Helpers 214.1 Introduction . . . . . . . . . . . . 214.2 Translation of labels and titles . . . 214.3 Integration with ACL . . . . . . . . 214.4 Navigation setup used in examples

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1027 1027 1028 1029 1029

215View Helper - Breadcrumbs 215.1 Introduction . . . . . . . . . . . . . 215.2 Basic usage . . . . . . . . . . . . . . 215.3 Specifying indentation . . . . . . . . 215.4 Customize output . . . . . . . . . . . 215.5 Rendering using a partial view script

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1035 1035 1035 1036 1036 1037

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

216View Helper - Links 1039 216.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 216.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041 217View Helper - Menu 217.1 Introduction . . . . . . . . . . . . 217.2 Basic usage . . . . . . . . . . . . . 217.3 Calling renderMenu() directly . . . 217.4 Rendering the deepest active menu

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1045 1045 1046 1047 1048

xxi

217.5 Rendering with maximum depth . . . . . . . . . . . . . . . . . . . . . 217.6 Rendering with minimum depth . . . . . . . . . . . . . . . . . . . . . 217.7 Rendering only the active branch . . . . . . . . . . . . . . . . . . . . 217.8 Rendering only the active branch with minimum depth . . . . . . . . . 217.9 Rendering only the active branch with maximum depth . . . . . . . . . 217.10Rendering only the active branch with maximum depth and no parents . 217.11Rendering a custom menu using a partial view script . . . . . . . . . . 218View Helper - Sitemap 218.1 Introduction . . . . . . . . . . . . 218.2 Basic usage . . . . . . . . . . . . . 218.3 Rendering using no ACL role . . . 218.4 Rendering using a maximum depth

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

1048 1049 1050 1051 1051 1052 1052

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1055 1055 1056 1057 1058

219View Helper - Navigation Proxy 1061 219.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 219.2 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 220Introduction to Zend\Paginator

1063

221Usage 1065 221.1 Paginating data collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065 221.2 The DbSelect adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066 221.3 Rendering pages with view scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067 222Configuration

1073

223Advanced usage 1075 223.1 Custom data source adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 223.2 Custom scrolling styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 223.3 Caching features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076 224Introduction to Zend\Permissions\Acl 224.1 Resources . . . . . . . . . . . . . 224.2 Roles . . . . . . . . . . . . . . . 224.3 Creating the Access Control List . 224.4 Registering Roles . . . . . . . . . 224.5 Defining Access Controls . . . . 224.6 Querying an ACL . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1079 1079 1080 1081 1081 1082 1083

225Refining Access Controls 1085 225.1 Precise Access Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085 225.2 Removing Access Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087 226Advanced Usage 1089 226.1 Storing ACL Data for Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 226.2 Writing Conditional ACL Rules with Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 227Introduction to Zend\Permissions\Rbac 1091 227.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 227.2 Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 227.3 Dynamic Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 228Methods

xxii

1093

229Examples 229.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.2 Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.3 Dynamic Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1095 . 1095 . 1096 . 1096

230Progress Bars 230.1 Introduction . . . 230.2 Basic Usage . . . 230.3 Persistent Progress 230.4 Standard Adapters

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

231File Upload Handlers 231.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.2 Methods of Reporting Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.3 Standard Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1099 1099 1099 1099 1100

1103 . 1103 . 1103 . 1104

232Introduction to Zend\Serializer 1107 232.1 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 232.2 Basic configuration Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108 232.3 Available Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108 233Zend\Serializer\Adapter 233.1 The PhpSerialize Adapter 233.2 The IgBinary Adapter . . 233.3 The Wddx Adapter . . . . 233.4 The Json Adapter . . . . . 233.5 The PythonPickle Adapter 233.6 The PhpCode Adapter . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

234Introduction to Zend\Server

1111 1111 1111 1111 1112 1112 1113 1115

235Zend\Server\Reflection 1117 235.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117 235.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117 236Zend\ServiceManager

1119

237Zend\ServiceManager Quick Start 1123 237.1 Using Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123 237.2 Modules as Service Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124 237.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124 238Delegator service factories 1129 238.1 Delegator factory signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 238.2 A Delegator factory use case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 239Lazy Services 239.1 Use cases . . . . . 239.2 Setup . . . . . . . 239.3 Practical example . 239.4 Configuration . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1133 1133 1133 1133 1135

240Session Config 1137 240.1 Standard Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137 240.2 Session Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138 240.3 Custom Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139 xxiii

241Session Container 1141 241.1 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141 241.2 Setting the Default Session Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141 242Session Manager 1143 242.1 Initializing the Session Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 242.2 Session Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 243Session Save Handlers 243.1 Cache . . . . . . . . . 243.2 DbTableGateway . . . 243.3 MongoDB . . . . . . 243.4 Custom Save Handlers

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1147 1147 1148 1148 1149

244Session Storage 244.1 Array Storage . . . . . 244.2 Session Storage . . . . 244.3 Session Array Storage 244.4 Custom Storage . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1151 1151 1151 1152 1152

245Session Validators 1153 245.1 Http User Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 245.2 Remote Addr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 245.3 Custom Validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154 246Zend\Soap\Server 246.1 Zend\Soap\Server constructor . . . . . 246.2 Methods to define Web Service API . . 246.3 Request and response objects handling 246.4 Document/Literal WSDL Handling . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1155 1155 1156 1157 1159

247Zend\Soap\Client 1161 247.1 Zend\Soap\Client Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161 247.2 Performing SOAP Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162 248WSDL Accessor 248.1 Zend\Soap\Wsdl constructor . . 248.2 addMessage() method . . . . . 248.3 addPortType() method . . . . . 248.4 addPortOperation() method . . 248.5 addBinding() method . . . . . . 248.6 addBindingOperation() method 248.7 addSoapBinding() method . . . 248.8 addSoapOperation() method . . 248.9 addService() method . . . . . . 248.10Type mapping . . . . . . . . . 248.11addDocumentation() method . . 248.12Get finalized WSDL document

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

1165 1165 1165 1166 1166 1166 1167 1167 1167 1167 1168 1169 1170

249AutoDiscovery 249.1 AutoDiscovery Introduction 249.2 Class autodiscovering . . . 249.3 Functions autodiscovering . 249.4 Autodiscovering Datatypes . 249.5 WSDL Binding Styles . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1171 1171 1172 1173 1173 1173

xxiv

. . . . .

. . . . .

250Zend\Stdlib\Hydrator 250.1 HydratorInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250.3 Available Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1175 . 1175 . 1175 . 1176

251Zend\Stdlib\Hydrator\Filter 251.1 Filter implementations . . . . . . . . 251.2 Remove filters . . . . . . . . . . . . 251.3 Add filters . . . . . . . . . . . . . . 251.4 Use the composite for complex filters 251.5 Using the provider interface . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1177 1177 1178 1178 1179 1180

252Zend\Stdlib\Hydrator\Strategy 1183 252.1 Adding strategies to the hydrators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183 252.2 Available implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184 252.3 Writing custom strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 253AggregateHydrator 1187 253.1 Installation requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 253.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 253.3 Advanced use cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188 254Introduction to Zend\Tag

1191

255Creating tag clouds with Zend\Tag\Cloud 1193 255.1 Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195 256Introduction to Zend\Test

1199

257Unit testing with PHPUnit

1201

258Setup your TestCase

1203

259Testing your Controllers and MVC Applications

1205

260Assertions

1207

261Request Assertions

1209

262CSS Selector Assertions

1211

263XPath Assertions

1213

264Redirect Assertions

1215

265Response Header Assertions

1217

266Zend\Text\Figlet 1219 266.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219 266.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 267Zend\Text\Table 1221 267.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221 267.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222 268Zend\Uri 1223 268.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223

xxv

268.2 Creating a New URI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 268.3 Manipulating an Existing URI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224 268.4 Common Instance Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224 269Introduction to Zend\Validator 269.1 What is a validator? . . . 269.2 Basic usage of validators . 269.3 Customizing messages . . 269.4 Translating messages . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1229 1229 1229 1230 1231

270Standard Validation Classes 1233 270.1 Alnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233 271Alpha 271.1 Supported options for Zend\I18n\Validator\Alpha 271.2 Basic usage . . . . . . . . . . . . . . . . . . . . 271.3 Using whitespaces . . . . . . . . . . . . . . . . 271.4 Using different languages . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1235 1235 1235 1235 1236

272Barcode 272.1 Supported options for Zend\Validator\Barcode 272.2 Basic usage . . . . . . . . . . . . . . . . . . . 272.3 Optional checksum . . . . . . . . . . . . . . . 272.4 Writing custom adapters . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1237 1239 1240 1240 1240

. . . .

273Between 1243 273.1 Supported options for Zend\Validator\Between . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243 273.2 Default behaviour for Zend\Validator\Between . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243 273.3 Validation exclusive the border values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243 274Callback 274.1 Supported options for Zend\Validator\Callback 274.2 Basic usage . . . . . . . . . . . . . . . . . . . 274.3 Usage with closures . . . . . . . . . . . . . . 274.4 Usage with class-based callbacks . . . . . . . 274.5 Adding options . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1245 1245 1245 1245 1246 1247

275CreditCard 275.1 Supported options for Zend\Validator\CreditCard 275.2 Basic usage . . . . . . . . . . . . . . . . . . . . 275.3 Accepting defined credit cards . . . . . . . . . . 275.4 Validation by using foreign APIs . . . . . . . . 275.5 Ccnum . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1249 1250 1250 1250 1251 1252

276Date 276.1 Supported options for Zend\Validator\Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.2 Default date validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.3 Self defined date validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1253 . 1253 . 1253 . 1253

277Db\RecordExists and Db\NoRecordExists 277.1 Supported options for Zend\Validator\Db\* 277.2 Basic usage . . . . . . . . . . . . . . . . . 277.3 Excluding records . . . . . . . . . . . . . 277.4 Database Schemas . . . . . . . . . . . . . 277.5 Using a Select object . . . . . . . . . . . .

. . . . .

xxvi

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1255 1255 1255 1256 1257 1258

278Digits 1259 278.1 Supported options for Zend\Validator\Digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259 278.2 Validating digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259 279EmailAddress 279.1 Basic usage . . . . . . . . . . . . . . . . . . . . 279.2 Options for validating Email Addresses . . . . . 279.3 Complex local parts . . . . . . . . . . . . . . . 279.4 Validating only the local part . . . . . . . . . . . 279.5 Validating different types of hostnames . . . . . 279.6 Checking if the hostname actually accepts email 279.7 Validating International Domains Names . . . . 279.8 Validating Top Level Domains . . . . . . . . . . 279.9 Setting messages . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

1261 1261 1261 1262 1262 1262 1262 1263 1264 1264

280File Validation Classes 280.1 Crc32 . . . . . . . 280.2 ExcludeExtension 280.3 ExcludeMimeType 280.4 Exists . . . . . . . 280.5 Extension . . . . . 280.6 Hash . . . . . . . 280.7 ImageSize . . . . 280.8 IsCompressed . . 280.9 IsImage . . . . . . 280.10Md5 . . . . . . . . 280.11MimeType . . . . 280.12NotExists . . . . . 280.13Sha1 . . . . . . . 280.14Size . . . . . . . . 280.15UploadFile . . . . 280.16WordCount . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

1265 1265 1266 1266 1266 1267 1268 1269 1270 1270 1271 1271 1273 1273 1274 1275 1275

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

281Float 281.1 Supported options for Zend\I18n\Validator\Float . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.2 Simple float validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.3 Localized float validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1277 . 1277 . 1277 . 1277

282GreaterThan 1279 282.1 Supported options for Zend\Validator\GreaterThan . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279 282.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279 282.3 Validation inclusive the border value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279 283Hex 283.1 Supported options for Zend\Validator\Hex

1281 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281

284Hostname 284.1 Supported options for Zend\Validator\Hostname 284.2 Basic usage . . . . . . . . . . . . . . . . . . . . 284.3 Validating different types of hostnames . . . . . 284.4 Validating International Domains Names . . . . 284.5 Validating Top Level Domains . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1283 1283 1283 1284 1284 1285

285Iban 1287 285.1 Supported options for Zend\Validator\Iban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287

xxvii

285.2 IBAN validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287 286Identical 286.1 Supported options for Zend\Validator\Identical 286.2 Basic usage . . . . . . . . . . . . . . . . . . . 286.3 Identical objects . . . . . . . . . . . . . . . . 286.4 Form elements . . . . . . . . . . . . . . . . . 286.5 Strict validation . . . . . . . . . . . . . . . . . 286.6 Configuration . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1289 1289 1289 1289 1290 1292 1292

287InArray 287.1 Supported options for Zend\Validator\InArray 287.2 Simple array validation . . . . . . . . . . . . . 287.3 Array validation modes . . . . . . . . . . . . 287.4 Recursive array validation . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1295 1295 1296 1296 1297

288Ip 1299 288.1 Supported options for Zend\Validator\Ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 288.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 288.3 Validate IPv4 or IPV6 alone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300 289Isbn 289.1 289.2 289.3 289.4

Supported options for Zend\Validator\Isbn Basic usage . . . . . . . . . . . . . . . . . Setting an explicit ISBN validation type . . Specifying a separator restriction . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

290LessThan 290.1 Supported options for Zend\Validator\LessThan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290.3 Validation inclusive the border value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

1301 1301 1301 1301 1302

1303 . 1303 . 1303 . 1303

291NotEmpty 1305 291.1 Supported options for Zend\Validator\NotEmpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305 291.2 Default behaviour for Zend\Validator\NotEmpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305 291.3 Changing behaviour for Zend\Validator\NotEmpty . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305 292PostCode 1307 292.1 Constructor options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1308 292.2 Supported options for Zend\Validator\PostCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1308 293Regex 1309 293.1 Supported options for Zend\Validator\Regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309 293.2 Validation with Zend\Validator\Regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309 293.3 Pattern handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309 294Sitemap Validators 294.1 Sitemap\Changefreq . . . . . . . . . . . . . . . 294.2 Sitemap\Lastmod . . . . . . . . . . . . . . . . . 294.3 Sitemap\Loc . . . . . . . . . . . . . . . . . . . 294.4 Sitemap\Priority . . . . . . . . . . . . . . . . . 294.5 Supported options for Zend\Validator\Sitemap_*

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1311 1311 1311 1312 1312 1312

295Step 1313 295.1 Supported options for Zend\Validator\Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313 295.2 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313 xxviii

295.3 Using floating-point values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313 296StringLength 296.1 Supported options for Zend\Validator\StringLength 296.2 Default behaviour for Zend\Validator\StringLength 296.3 Limiting the maximum allowed length of a string . 296.4 Limiting the minimal required length of a string . 296.5 Limiting a string on both sides . . . . . . . . . . . 296.6 Encoding of values . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1315 1315 1315 1315 1316 1316 1316

297File Validation Classes 297.1 Crc32 . . . . . . . 297.2 ExcludeExtension 297.3 ExcludeMimeType 297.4 Exists . . . . . . . 297.5 Extension . . . . . 297.6 Hash . . . . . . . 297.7 ImageSize . . . . 297.8 IsCompressed . . 297.9 IsImage . . . . . . 297.10Md5 . . . . . . . . 297.11MimeType . . . . 297.12NotExists . . . . . 297.13Sha1 . . . . . . . 297.14Size . . . . . . . . 297.15UploadFile . . . . 297.16WordCount . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

1319 1319 1320 1320 1320 1321 1322 1323 1324 1324 1325 1325 1327 1327 1328 1329 1329

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

298Validator Chains 1331 298.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331 299Writing Validators 299.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299.2 Creating a Simple Validation Class . . . . . . . . . . . . . . . . . . 299.3 Writing a Validation Class having Dependent Conditions . . . . . . . 299.4 Validation with Independent Conditions, Multiple Reasons for Failure

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1333 1333 1333 1334 1335

300Validation Messages 1337 300.1 Using pre-translated validation messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337 300.2 Limit the size of a validation message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1338 301Getting the Zend Framework Version 301.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301.2 Example of the compareVersion() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301.3 Example of the getLatest() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1339 . 1339 . 1339 . 1339

302Zend\View Quick Start 1341 302.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1341 302.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1341 303The PhpRenderer 303.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2 Options and Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3 Additional Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1355 . 1355 . 1359 . 1359

xxix

304PhpRenderer View Scripts 1361 304.1 Escaping Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1362 305The ViewEvent 305.1 Order of events . . . . . . . . . . . . . . . 305.2 ViewEvent::EVENT_RENDERER . . . . 305.3 ViewEvent::EVENT_RENDERER_POST 305.4 ViewEvent::EVENT_RESPONSE . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1363 1363 1364 1365 1365

306View Helpers 1367 306.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1367 306.2 Included Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1368 307View Helper - BasePath 1369 307.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369 307.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369 308View Helper - Cycle 1371 308.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1371 308.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1371 308.3 Working with two or more cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1372 309View Helper - Doctype 309.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 309.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . 309.3 Retrieving the Doctype . . . . . . . . . . . . . . . . . . . 309.4 Choosing a Doctype to Use with the Open Graph Protocol 309.5 Zend MVC View Manager . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1373 1373 1374 1374 1374 1375

310FlashMessenger Helper 310.1 Introduction . . . . . . . . . . . . . . . . . . . . . 310.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . 310.3 CSS Layout . . . . . . . . . . . . . . . . . . . . . . 310.4 HTML Layout . . . . . . . . . . . . . . . . . . . . 310.5 Sample Modification for Twitter Bootstrap 3 . . . . 310.6 Alternative Configuration of the ViewHelper Layout

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1377 1377 1377 1377 1378 1378 1379

. . . . . .

. . . . . .

. . . . . .

311Gravatar Helper 1381 311.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1381 311.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1381 311.3 Custom Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1381 312View Helper - HeadLink 1385 312.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385 312.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1386 313View Helper - HeadMeta 313.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3 Usage with XHTML1_RDFA doctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1387 . 1387 . 1388 . 1388

314View Helper - HeadScript 314.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.3 Capturing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1391 . 1391 . 1393 . 1393

xxx

315View Helper - HeadStyle 1395 315.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1395 315.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1398 315.3 Capturing Style Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1398 316View Helper - HeadTitle 1401 316.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401 316.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401 317View Helper - HtmlList 1403 317.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1403 317.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1403 318View Helper - HTML Object 1407 318.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1407 318.2 Flash helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1407 318.3 Customizing the object by passing additional arguments . . . . . . . . . . . . . . . . . . . . . . . . 1408 319View Helper - Identity 1409 319.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1409 319.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1409 319.3 Using with ServiceManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1409 320View Helper - InlineScript 1411 320.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411 320.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411 320.3 Capturing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1412 321View Helper - JSON 1413 321.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1413 321.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1413 322View Helper - Partial 1415 322.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415 322.2 Basic Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415 322.3 Using PartialLoop to Render Iterable Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1416 323View Helper - Placeholder 323.1 Introduction . . . . . . . 323.2 Basic Usage . . . . . . . 323.3 Aggregate Content . . . . 323.4 Capture Content . . . . . 323.5 Concrete Implementations

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1419 1419 1419 1419 1420 1421

324View Helper - URL 324.1 Basic Usage . . . . . . . . . 324.2 Query String Arguments . . . 324.3 Fragments . . . . . . . . . . 324.4 Reusing Matched Parameters

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1423 1423 1424 1424 1425

. . . . .

325Advanced usage of helpers 1427 325.1 Registering Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427 325.2 Writing Custom Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1428 325.3 Registering Concrete Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1430

xxxi

326Introduction to Zend\XmlRpc 1431 326.1 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431 327Zend\XmlRpc\Client 327.1 Introduction . . . . . . . 327.2 Method Calls . . . . . . . 327.3 Types and Conversions . . 327.4 Server Proxy Object . . . 327.5 Error Handling . . . . . . 327.6 Server Introspection . . . 327.7 From Request to Response 327.8 HTTP Client and Testing .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

1433 1433 1433 1434 1436 1436 1437 1438 1438

328Zend\XmlRpc\Server 328.1 Introduction . . . . . . . . . . . . . . . . . . 328.2 Basic Usage . . . . . . . . . . . . . . . . . . 328.3 Server Structure . . . . . . . . . . . . . . . . 328.4 Anatomy of a webservice . . . . . . . . . . . 328.5 Conventions . . . . . . . . . . . . . . . . . . 328.6 Utilizing Namespaces . . . . . . . . . . . . . 328.7 Custom Request Objects . . . . . . . . . . . . 328.8 Custom Responses . . . . . . . . . . . . . . . 328.9 Handling Exceptions via Faults . . . . . . . . 328.10Caching Server Definitions Between Requests 328.11Usage Examples . . . . . . . . . . . . . . . . 328.12Performance optimization . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

1441 1441 1441 1441 1442 1442 1443 1443 1444 1444 1444 1445 1449

329ZendService\Akismet 329.1 Introduction . . . . . . . . . . 329.2 Verify an API key . . . . . . . 329.3 Check for spam . . . . . . . . . 329.4 Submitting known spam . . . . 329.5 Submitting false positives (ham) 329.6 Zend-specific Methods . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1451 1451 1451 1452 1452 1453 1453

330ZendService\Amazon 330.1 Introduction . . . . . . . . . . . . . . . . . . 330.2 Country Codes . . . . . . . . . . . . . . . . . 330.3 Looking up a Specific Amazon Item by ASIN . 330.4 Performing Amazon Item Searches . . . . . . 330.5 Using the Alternative Query API . . . . . . . 330.6 ZendService\Amazon Classes . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1455 1455 1456 1456 1457 1457 1458

331ZendService\Amazon\S3 331.1 Introduction . . . . . . . . 331.2 Registering with Amazon S3 331.3 API Documentation . . . . 331.4 Features . . . . . . . . . . . 331.5 Getting Started . . . . . . . 331.6 Bucket operations . . . . . 331.7 Object operations . . . . . . 331.8 Data Streaming . . . . . . . 331.9 Stream wrapper . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

1463 1463 1463 1463 1463 1464 1464 1465 1466 1467

332ZendService\Amazon\Sqs

xxxii

. . . . . . . .

. . . . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . .

. . . . . . . . .

. . . . . . . . .

1469

332.1 332.2 332.3 332.4 332.5 332.6 332.7

Introduction . . . . . . . . . Registering with Amazon SQS API Documentation . . . . . Features . . . . . . . . . . . . Getting Started . . . . . . . . Queue operations . . . . . . . Message operations . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

1469 1469 1469 1469 1470 1470 1471

333ZendService\Amazon\Ec2 1473 333.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473 333.2 What is Amazon Ec2? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473 333.3 Static Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473 334ZendService\Amazon\Ec2: CloudWatch Monitoring 1475 334.1 CloudWatch Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1475 335ZendService\Amazon\Ec2: Elastic Block Storage (EBS) 335.1 Create EBS Volumes and Snapshots . . . . . . . . . 335.2 Describing EBS Volumes and Snapshots . . . . . . 335.3 Attach and Detaching Volumes from Instances . . . 335.4 Deleting EBS Volumes and Snapshots . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1477 1477 1478 1479 1479

336ZendService\Amazon\Ec2: Elastic IP Addresses 1481 336.1 Allocating a new Elastic IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1481 337ZendService\Amazon\Ec2: Instances 337.1 Instance Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.2 Running Amazon EC2 Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.3 Amazon Instance Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1483 . 1483 . 1484 . 1486

338ZendService\Amazon\Ec2: Regions and Availability Zones 1489 338.1 Amazon EC2 Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1489 338.2 Amazon EC2 Availability Zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1490 339ZendService\Amazon\Ec2: Reserved Instances 1491 339.1 How Reserved Instances are Applied . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1491 339.2 Reserved Instances Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1491 340ZendService\Amazon\Ec2: Security Groups 1493 340.1 Security Group Maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1493 340.2 Authorizing Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1494 340.3 Revoking Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1495 341ZendService\Amazon\Ec2: Windows Instances 1497 341.1 Windows Instances Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1498 342ZendService\Apple\Apns 342.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.2 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3 Feedback Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1499 . 1499 . 1499 . 1501

343ZendService\Audioscrobbler 343.1 Introduction . . . . . . 343.2 Users . . . . . . . . . . 343.3 Artists . . . . . . . . . 343.4 Tracks . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1503 1503 1503 1505 1506

xxxiii

343.5 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506 343.6 Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506 343.7 Forums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507 344ZendService\Delicious 344.1 Introduction . . . . . . . . . . 344.2 Retrieving posts . . . . . . . . 344.3 ZendService\Delicious\PostList 344.4 Editing posts . . . . . . . . . . 344.5 Deleting posts . . . . . . . . . 344.6 Adding new posts . . . . . . . 344.7 Tags . . . . . . . . . . . . . . . 344.8 Bundles . . . . . . . . . . . . . 344.9 Public data . . . . . . . . . . . 344.10HTTP client . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

1509 1509 1509 1510 1511 1512 1512 1512 1513 1513 1514

345ZendService\DeveloperGarden 345.1 Introduction . . . . . . . 345.2 BaseUserService . . . . . 345.3 IP Location . . . . . . . . 345.4 Local Search . . . . . . . 345.5 Send SMS . . . . . . . . 345.6 SMS Validation . . . . . . 345.7 Voice Call . . . . . . . . 345.8 ConferenceCall . . . . . . 345.9 Performance and Caching

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

1515 1515 1516 1517 1518 1518 1519 1519 1520 1522

346ZendService\Flickr 346.1 Introduction . . . . . . . . . . . . . . . . . 346.2 Finding Flickr Users’ Photos and Information 346.3 Finding photos From a Group Pool . . . . . 346.4 Retrieving Flickr Image Details . . . . . . . 346.5 ZendService\Flickr Result Classes . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1523 1523 1523 1524 1524 1525

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

347ZendService\Google\Gcm 1527 347.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527 347.2 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527 348ZendService\LiveDocx 1529 348.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1529 348.2 ZendService\LiveDocx\MailMerge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1531 349ZendService\Rackspace 349.1 Introduction . . . . . . . . 349.2 Registering with Rackspace 349.3 Cloud Files . . . . . . . . . 349.4 Cloud Servers . . . . . . . 349.5 Available Methods . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1549 1549 1549 1549 1550 1550

350ZendService\Rackspace\Servers 350.1 Overview . . . . . . . . . . 350.2 Terminology . . . . . . . . 350.3 Quick Start . . . . . . . . . 350.4 Available Methods . . . . . 350.5 Examples . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1553 1553 1553 1554 1555 1559

xxxiv

351ZendService\Rackspace\Files 351.1 Overview . . . . . . . . 351.2 Quick Start . . . . . . . 351.3 Available Methods . . . 351.4 Examples . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1561 1561 1561 1563 1566

352ZendService\ReCaptcha 1569 352.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1569 352.2 Simplest use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1569 352.3 Hiding email addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1570 353ZendService\SlideShare 353.1 Getting Started with ZendService\SlideShare 353.2 The SlideShow object . . . . . . . . . . . . 353.3 Retrieving a single slide show . . . . . . . . 353.4 Retrieving Groups of Slide Shows . . . . . . 353.5 ZendService\SlideShare Caching policies . . 353.6 Changing the behavior of the HTTP Client .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1573 1573 1573 1576 1576 1577 1577

354ZendService\StrikeIron 354.1 Overview . . . . . . . . . . 354.2 Registering with StrikeIron 354.3 Getting Started . . . . . . . 354.4 Making Your First Query . . 354.5 Examining Results . . . . . 354.6 Handling Errors . . . . . . 354.7 Checking Your Subscription

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

1579 1579 1580 1580 1580 1581 1582 1582

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

355ZendService\StrikeIron: Bundled Services 1585 355.1 ZIP Code Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1585 355.2 U.S. Address Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1586 355.3 Sales & Use Tax Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1587 356ZendService\StrikeIron: Advanced Uses 1589 356.1 Using Services by WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1589 356.2 Viewing SOAP Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1590 357ZendService\Technorati 357.1 Introduction . . . . . . . . . . . . . 357.2 Getting Started . . . . . . . . . . . . 357.3 Making Your First Query . . . . . . . 357.4 Consuming Results . . . . . . . . . . 357.5 Handling Errors . . . . . . . . . . . 357.6 Checking Your API Key Daily Usage 357.7 Available Technorati Queries . . . . 357.8 ZendService\Technorati Classes . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

1591 1591 1591 1591 1592 1594 1594 1595 1598

358ZendService\Twitter 358.1 Introduction . . . . . . 358.2 Quick Start . . . . . . . 358.3 Authentication . . . . . 358.4 Account Methods . . . . 358.5 Application Methods . . 358.6 Blocking Methods . . . 358.7 Direct Message Methods

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

1603 1603 1603 1605 1606 1607 1607 1608

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

xxxv

358.8 Favorites Methods . 358.9 Friendship Methods 358.10Search Methods . . 358.11Status Methods . . . 358.12User Methods . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1609 1609 1610 1610 1612

359ZendService\WindowsAzure 359.1 Introduction . . . . . . . . . . . . 359.2 Installing the Windows Azure SDK 359.3 API Documentation . . . . . . . . 359.4 Features . . . . . . . . . . . . . . . 359.5 Architecture . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

1615 1615 1615 1615 1615 1616

360ZendService\WindowsAzure\Storage\Blob 360.1 API Examples . . . . . . . . . . . . . 360.2 Root container . . . . . . . . . . . . . 360.3 Blob storage stream wrapper . . . . . . 360.4 Shared Access Signature . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1617 1617 1619 1619 1620

361ZendService\WindowsAzure\Storage\Table 1623 361.1 Operations on tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1623 361.2 Operations on entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1624 361.3 Table storage session handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1630 362ZendService\WindowsAzure\StorageQueue 1633 362.1 API Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633 363Copyright Information

1637

364Introduction to Zend Framework 2

1639

365User Guide

1641

366Getting Started With Zend Studio 10 & Zend Server 6

1643

367Zend Framework Tool (ZFTool)

1645

368Learning Zend Framework 2

1647

369Migration

1649

370Zend Framework 2 Reference 370.1 Zend\Authentication . . . 370.2 Zend\Barcode . . . . . . 370.3 Zend\Cache . . . . . . . . 370.4 Zend\Captcha . . . . . . . 370.5 Zend\Code\Generator . . 370.6 Zend\Config . . . . . . . 370.7 Zend\Console . . . . . . . 370.8 Zend\Console\Getopt . . . 370.9 Zend\Crypt . . . . . . . . 370.10Zend\Db . . . . . . . . . 370.11Zend\Debug . . . . . . . 370.12Zend\Di . . . . . . . . . . 370.13Zend\Dom . . . . . . . . 370.14Zend\Escaper . . . . . . .

xxxvi

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

1651 1651 1651 1651 1652 1652 1652 1652 1652 1653 1653 1653 1653 1654 1654

370.15Zend\EventManager . . 370.16Zend\Exception . . . . . 370.17Zend\Feed . . . . . . . 370.18Zend\File . . . . . . . . 370.19Zend\Filter . . . . . . . 370.20Zend\Form . . . . . . . 370.21Zend\Http . . . . . . . . 370.22Zend\I18n . . . . . . . 370.23Zend\InputFilter . . . . 370.24Zend\Json . . . . . . . . 370.25Zend\Ldap . . . . . . . 370.26Zend\Loader . . . . . . 370.27Zend\Log . . . . . . . . 370.28Zend\Mail . . . . . . . 370.29Zend\Math . . . . . . . 370.30Zend\Memory . . . . . 370.31Zend\Mime . . . . . . . 370.32Zend\ModuleManager . 370.33Zend\Mvc . . . . . . . 370.34Zend\Navigation . . . . 370.35Zend\Paginator . . . . . 370.36Zend\Permissions\Acl . 370.37Zend\Permissions\Rbac 370.38Zend\ProgressBar . . . 370.39Zend\Serializer . . . . . 370.40Zend\Server . . . . . . 370.41Zend\ServiceManager . 370.42Zend\Session . . . . . . 370.43Zend\Soap . . . . . . . 370.44Zend\Stdlib . . . . . . . 370.45Zend\Tag . . . . . . . . 370.46Zend\Test . . . . . . . . 370.47Zend\Text . . . . . . . . 370.48Zend\Uri . . . . . . . . 370.49Zend\Validator . . . . . 370.50Zend\Version . . . . . . 370.51Zend\View . . . . . . . 370.52Zend\XmlRpc . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1654 1654 1654 1655 1655 1655 1655 1656 1656 1656 1656 1656 1657 1657 1657 1657 1657 1658 1658 1658 1658 1659 1659 1659 1659 1659 1659 1660 1660 1660 1660 1660 1660 1661 1661 1661 1661 1662

371Services for Zend Framework 2 Reference 371.1 ZendService\Akismet . . . . . . . . . 371.2 ZendService\Amazon . . . . . . . . . 371.3 ZendService\AppleApns . . . . . . . . 371.4 ZendService\Audioscrobbler . . . . . . 371.5 ZendService\Delicious . . . . . . . . . 371.6 ZendService\DeveloperGarden . . . . 371.7 ZendService\Flickr . . . . . . . . . . . 371.8 ZendService\Google\Gcm . . . . . . . 371.9 ZendService\LiveDocx . . . . . . . . . 371.10ZendService\Rackspace . . . . . . . . 371.11ZendService\ReCaptcha . . . . . . . . 371.12ZendService\SlideShare . . . . . . . . 371.13ZendService\StrikeIron . . . . . . . . . 371.14ZendService\Technorati . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

1663 1663 1663 1663 1664 1664 1664 1664 1664 1664 1664 1664 1664 1665 1665

xxxvii

371.15ZendService\Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 371.16ZendService\WindowsAzure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 372Copyright

1667

373Indices and tables

1669

xxxviii

CHAPTER 1

Overview

Zend Framework 2 is an open source framework for developing web applications and services using PHP 5.3+. Zend Framework 2 uses 100% object-oriented code and utilises most of the new features of PHP 5.3, namely namespaces, late static binding, lambda functions and closures. Zend Framework 2 evolved from Zend Framework 1, a successful PHP framework with over 15 million downloads. Note: ZF2 is not backward compatible with ZF1, because of the new features in PHP 5.3+ implemented by the framework, and due to major rewrites of many components. The component structure of Zend Framework 2 is unique; each component is designed with few dependencies on other components. ZF2 follows the SOLID object-oriented design principle. This loosely coupled architecture allows developers to use whichever components they want. We call this a “use-at-will” design. We support Pyrus and Composer as installation and dependency tracking mechanisms for the framework as a whole and for each component, further enhancing this design. We use PHPUnit to test our code and Travis CI as a Continuous Integration service. While they can be used separately, Zend Framework 2 components in the standard library form a powerful and extensible web application framework when combined. Also, it offers a robust, high performance MVC implementation, a database abstraction that is simple to use, and a forms component that implements HTML5 form rendering, validation, and filtering so that developers can consolidate all of these operations using one easy-to-use, object oriented interface. Other components, such as Zend\Authentication and Zend\Permissions\Acl, provide user authentication and authorization against all common credential stores. Still others, with the ZendService namespace, implement client libraries to simply access the most popular web services available. Whatever your application needs are, you’re likely to find a Zend Framework 2 component that can be used to dramatically reduce development time with a thoroughly tested foundation. The principal sponsor of the project ‘Zend Framework 2’ is Zend Technologies, but many companies have contributed components or significant features to the framework. Companies such as Google, Microsoft, and StrikeIron have partnered with Zend to provide interfaces to web services and other technologies they wish to make available to Zend Framework 2 developers. Zend Framework 2 could not deliver and support all of these features without the help of the vibrant Zend Framework 2 community. Community members, including contributors, make themselves available on mailing lists, IRC channels and other forums. Whatever question you have about Zend Framework 2, the community is always available to address it.

1

Zend Framework 2 Documentation, Release 2.3.1

2

Chapter 1. Overview

CHAPTER 2

Installation

• New to Zend Framework? Download the latest stable release. Available in .zip and .tar.gz formats. • Brave, cutting edge? Download Zend Framework’s Git repository using a Git client. Zend Framework is open source software, and the Git repository used for its development is publicly available on GitHub. Consider using Git to get Zend Framework if you want to contribute back to the framework, or need to upgrade your framework version more often than releases occur. Once you have a copy of Zend Framework available, your application needs to be able to access the framework classes found in the library folder. There are several ways to achieve this. Failing to find a Zend Framework 2 installation, the following error occurs: Fatal error: Uncaught exception ’RuntimeException’ with message ’Unable to load ZF2. Run ‘php composer.phar install‘ or define a ZF2_PATH environment variable.’

To fix that, you can add the Zend Framework’s library path to the PHP include_path. Also, you should set an environment path named ‘ZF2_PATH’ in httpd.conf (or equivalent). i.e. SetEnv ZF2_PATH /var/ZF2 running Linux. Rob Allen has kindly provided the community with an introductory tutorial, Getting Started with Zend Framework 2. Other Zend Framework community members are actively working on expanding the tutorial.

3

Zend Framework 2 Documentation, Release 2.3.1

4

Chapter 2. Installation

CHAPTER 3

Getting Started with Zend Framework 2

This tutorial is intended to give an introduction to using Zend Framework 2 by creating a simple database driven application using the Model-View-Controller paradigm. By the end you will have a working ZF2 application and you can then poke around the code to find out more about how it all works and fits together.

3.1 Some assumptions This tutorial assumes that you are running at least PHP 5.3.23 with the Apache web server and MySQL, accessible via the PDO extension. Your Apache installation must have the mod_rewrite extension installed and configured. You must also ensure that Apache is configured to support .htaccess files. This is usually done by changing the setting: 1

AllowOverride None

to 1

AllowOverride FileInfo

in your httpd.conf file. Check with your distributions documentation for exact details. You will not be able to navigate to any page other than the home page in this tutorial if you have not configured mod_rewrite and .htaccess usage correctly. Note: Alternatively, if you are using PHP 5.4+ you may use the built-in web server instead of Apache for development.

3.2 The tutorial application The application that we are going to build is a simple inventory system to display which albums we own. The main page will list our collection and allow us to add, edit and delete CDs. We are going to need four pages in our website:

5

Zend Framework 2 Documentation, Release 2.3.1

Page List of albums Add new album Edit album Delete album

Description This will display the list of albums and provide links to edit and delete them. Also, a link to enable adding new albums will be provided. This page will provide a form for adding a new album. This page will provide a form for editing an album. This page will confirm that we want to delete an album and then delete it.

We will also need to store our data into a database. We will only need one table with these fields in it: Field name id artist title

6

Type integer varchar(100) varchar(100)

Null? No No No

Notes Primary key, auto-increment

Chapter 3. Getting Started with Zend Framework 2

CHAPTER 4

Getting started: A skeleton application

In order to build our application, we will start with the ZendSkeletonApplication available on github. Use Composer (http://getcomposer.org) to create a new project from scratch with Zend Framework: 1 2

php composer.phar create-project --repository-url="https://packages.zendframework.com" zendframework php composer.phar update

Note: Another way to install the ZendSkeletonApplication is to use github. Go to https://github.com/zendframework/ZendSkeletonApplication and click the Zip button. This will download a file with a name like ZendSkeletonApplication-master.zip or similar. Unzip this file into the directory where you keep all your vhosts and rename the resultant directory to zf2-tutorial. ZendSkeletonApplication is set up to use Composer (http://getcomposer.org) to resolve its dependencies. In this case, the dependency is Zend Framework 2 itself. To install Zend Framework 2 into our application we simply type: 1 2 3

php composer.phar self-update php composer.phar install php composer.phar update

from the zf2-tutorial folder. This takes a while. You should see an output like: 1 2 3

Installing dependencies from lock file - Installing zendframework/zendframework (dev-master) Cloning 18c8e223f070deb07c17543ed938b54542aa0ed8

4 5

Generating autoload files

Note: If you see this message: 1 2

[RuntimeException] The process timed out.

then your connection was too slow to download the entire package in time, and composer timed out. To avoid this, instead of running:

7

Zend Framework 2 Documentation, Release 2.3.1

1 2

php composer.phar install php composer.phar update

run instead: 1 2

COMPOSER_PROCESS_TIMEOUT=5000 php composer.phar install COMPOSER_PROCESS_TIMEOUT=5000 php composer.phar update

Note: For windows users with wamp: 1. Install composer for windows Check composer is properly installed by running 1

composer

2. Install git for windows. Also need to add git path in windows environment variable Check git is properly installed by running 1

git

3. Now install zf2 using command 1

composer create-project --repository-url="https://packages.zendframework.com" -s dev zendframewo

We can now move on to the web server setup.

4.1 Using the Apache Web Server You now need to create an Apache virtual host for the application and edit your hosts file so that http://zf2-tutorial.localhost will serve index.php from the zf2-tutorial/public directory. Setting up the virtual host is usually done within httpd.conf or extra/httpd-vhosts.conf. If you are using httpd-vhosts.conf, ensure that this file is included by your main httpd.conf file. Some Linux distributions (ex: Ubuntu) package Apache so that configuration files are stored in /etc/apache2 and create one file per virtual host inside folder /etc/apache2/sites-enabled. In this case, you would place the virtual host block below into the file /etc/apache2/sites-enabled/zf2-tutorial. Ensure that NameVirtualHost is defined and set to *:80 or similar, and then define a virtual host along these lines: 1 2 3 4 5 6 7 8 9 10 11

ServerName zf2-tutorial.localhost DocumentRoot /path/to/zf2-tutorial/public SetEnv APPLICATION_ENV "development" DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all

Make sure that you update your /etc/hosts or c:\windows\system32\drivers\etc\hosts file so that zf2-tutorial.localhost is mapped to 127.0.0.1. The website can then be accessed using http://zf2-tutorial.localhost.

8

Chapter 4. Getting started: A skeleton application

Zend Framework 2 Documentation, Release 2.3.1

1

127.0.0.1

zf2-tutorial.localhost localhost

Restart Apache. If you’ve done it correctly, it should look something like this:

To test that your .htaccess file is working, navigate to http://zf2-tutorial.localhost/1234 and you should see this:

If you see a standard Apache 404 error, then you need to fix .htaccess usage before continuing. If you’re are using IIS with the URL Rewrite Module, import the following: 1 2

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [NC,L]

You now have a working skeleton application and we can start adding the specifics for our application.

4.1. Using the Apache Web Server

9

Zend Framework 2 Documentation, Release 2.3.1

4.2 Using the Built-in PHP CLI Server Alternatively if you are using PHP 5.4 or above you can use the built-in CLI server (cli-server). To do this, you just start the server in the root directory: 1

php -S 0.0.0.0:8080 -t public/ public/index.php

This will make the website available on port 8080 on all network interfaces, using public/index.php to handle routing. This means the site is accessible via http://localhost:8080 or http://:8080. If youve done it right, you should see the same result as with Apache above. To test that your routing is working, navigate to http://localhost:8080/1234 and you should see the same error page as with Apache above. Note: The built-in CLI server is for development only.

4.3 Error reporting Optionally, when using Apache, you can use the APPLICATION_ENV setting in your VirtualHost to let PHP output all its errors to the browser. This can be useful during the development of your application. Edit index.php from the zf2-tutorial/public/ directory and change it to the following: 1

./AlbumTest

And a file called Bootstrap.php, also under zf2-tutorial/module/Album/test: 1

...

The navigation helper is built in to Zend Framework 2, and uses the service manager configuration we’ve already defined to configure itself automatically. Refreshing your application you will see a working menu, with just a few tweaks however, we can make it look awesome: module/Application/view/layout/layout.phtml 1 2 3 4 5 6 7 8 9