Zend Framework Introduction

32
Copyright © 2006, Zend Technologies Inc. Introducing: Zend Framework John Coggeshall

description

Introduction to Zend Framework

Transcript of Zend Framework Introduction

Page 1: Zend Framework Introduction

Copyright © 2006, Zend Technologies Inc.

Introducing: Zend Framework

John Coggeshall

Page 2: Zend Framework Introduction

Apr 10, 2023 # 2

Welcome

• Today I’ll be introducing you to the Zend Framework What it is Why we’re doing it How to use it Where it’s going How to be a part of it

Page 3: Zend Framework Introduction

Apr 10, 2023 # 3

Getting Started

• Zend Framework is.. A modular collection of PHP classes based on PHP 5

to simplify common tasks A starting point for your applications A demonstration of PHP 5 best practices A smaller component of the PHP Collaboration

Project

• Zend Framework isn’t… A free-reign open source project A religion

Page 4: Zend Framework Introduction

Apr 10, 2023 # 4

Goals of the Framework

• Zend Framework strives to be fundamentally…. An industry-leading framework for PHP application

development A partnership between many companies already

experienced in PHP Framework development

• Zend Framework strives to be technically… A source of high-quality, PHP 5 / E_STRICT compatible

application components Completely PHP 5 powered, requiring as few external PHP

extensions as necessary A minimal object hierarchy to achieve the necessary goals Modular design allowing developers to use the framework

at will, as they see fit.

Page 5: Zend Framework Introduction

Apr 10, 2023 # 5

Why Yet another Framework?

• Keep PHP competitive with other technologies .NET, Java, etc.

• Provide “clean” IP to enable commercial use Real companies can’t just “borrow” code from the

Internet without clear licensing

• “Extreme Simplicity”: It may not be simple technically, but using it should be.

• Take full advantage of PHP 5

Page 6: Zend Framework Introduction

Apr 10, 2023 # 6

The Framework License

• Zend Framework is licensed using a PHP/BSD style license Anyone can use it, for anything, no strings attached –

period.

• Along with the license of the framework itself, contributors must sign a Contributor License Agreement (CLA)

Page 7: Zend Framework Introduction

Apr 10, 2023 # 7

There’s no such thing as a free…

• Why spend so much time and effort on something, just to give it away? Yes, we’re still interested in making money

• For the continued success of PHP it must be a collaboration beyond OSS hackers Through the PHP Collaboration project, and projects

like Zend Framework, we can leverage the knowledge of some of the best in the industry in the benefit of PHP as a whole

As you might expect, Zend benefits with PHP

Page 8: Zend Framework Introduction

Apr 10, 2023 # 8

We eat our own dog food

• Zend Framework is more than unit-tested, it is used in real-life production environments Gives us the ability to test performance, ease of use,

etc. in a practical environment

Zend and its partners are already using the preview release of the Framework to speed development of their applications

Both the Framework homepage (framework.zend.com) and our new Developer’s Zone (devzone.zend.com) use the preview release of Framework as their foundation.

Page 9: Zend Framework Introduction

Apr 10, 2023 # 9

The grail: Extreme Simplicity

• Many of PHP 5’s most exciting new technologies are really simple to use: Simple XML SOAP Tidy

• While the underlying technologies may be extremely complex, the end-user APIs are reduced to an extremely simple interface

Page 10: Zend Framework Introduction

Apr 10, 2023 # 10

Getting the Grail

• To achieve the grail of extreme simplicity “Simple things should be simple, complex things

should be possible”

• Use-at-will architecture You shouldn’t be forced into buying the whole pizza

just for a slice Use individual components (controller/model)

without being forced to use everything (your own template/view)

• Configuration-less The framework should be plug-and-go, no

configuration files necessary

Page 11: Zend Framework Introduction

Apr 10, 2023 # 11

Zend Framework from 10,000 feet

Page 12: Zend Framework Introduction

Apr 10, 2023 # 12

Completely PHP-5 focused

• Requires PHP 5.0.4 or later for near future

• Takes full advantage of the PHP exception model

• Constants are all at the class-level

• No functions in global namespace

• ZE2 / SPL technologies fully utilized where it makes sense

• Black magic __magic() functions used very sparsely

Page 13: Zend Framework Introduction

Apr 10, 2023 # 13

Preview Release

• PR 1.2 is the latest preview release of the Framework including many immediately useful tools such as: A basic MVC framework for application design A PDO-based database layer Feed (RSS, Atom) ingestion and manipulation An HTTP client Input data filtering Json support for AJAX PDF generation and manipulation RPC / Web service support And more!

Page 14: Zend Framework Introduction

Apr 10, 2023 # 14

$ svn checkout http://framework.zend.com/svn/framework/trunk

• You can either get the framework preview release or check out the latest repository version

• Preview Release: http://framework.zend.com/

• Repository:

Getting Zend Framework

Page 15: Zend Framework Introduction

Apr 10, 2023 # 15

Installing Zend Framework

• Installing the framework is very easy, just modify your include_path to include the library/ directory

From php.ini:

From .htaccess

……include_path=“.:/usr/local/lib/php:/usr/local/lib/ZendFramework”……

……php_value include_path “.:/usr/local/lib/php:/usr/local/lib/ZendFramework”……

Page 16: Zend Framework Introduction

Apr 10, 2023 # 16

MVC Pattern

• MVC, or Model View Controller pattern is a powerful technique for developing user interfaces

• Originally was conceived for client-side GUI applications and adopted to the web

• Zend Framework provides a simplistic MVC model

Page 17: Zend Framework Introduction

Apr 10, 2023 # 17

Example Controller

• Note: indexAction() is declared abstract in Zend_Controller_Action, and therefore must be defined in any Action/Page controller

Page 18: Zend Framework Introduction

Apr 10, 2023 # 18

Passing Parameters

• Beyond $_GET/$_POST you can also pass parameters to a specific controller action by appending them to the URL: http://localhost/foo/dosomething/param1/value1/param2/value2

• Parameters can be accessed from within the action by name $this->_getParam(<key> [, <default value>]); $this->_getAllParams();

Page 19: Zend Framework Introduction

Apr 10, 2023 # 19

Dealing with 404s

• 404 errors are no longer the responsibility of Apache per-se, and are more likely to result in a ‘Class not found’ / ‘Method not found’ exception

• To deal with these Zend Framework provides two methods In the event of a controller not found, the

IndexController::noRoute() method will be called instead

In the event a controller action is not defined, it is the responsibility of the controller to implement safeguards (i.e. __call() which traps bad action calls)

Page 20: Zend Framework Introduction

Apr 10, 2023 # 20

Chaining Controllers

• Controllers can be chained together to either break business logic out into components, or to otherwise redirect the user $this->_forward(<controller_name> [, <parameters>]) Parameters are a series of key/value pairs Controller Chaining does not occur until the current

action is complete, to immediately forward you must return from the current action after calling _forward()

• Forwarding does not cause a refresh on the client, to physically refresh the browser $this->_redirect(<url>);

Page 21: Zend Framework Introduction

Apr 10, 2023 # 21

Final thoughts on MVC

• Although the pattern dictates three individual class types, they are as conceptual as functional

• For instance a “model” or “view” isn’t absolutely necessary to gain most of the benefit of MVC You can always perform queries from a controller You can always print output from a controller

• Although not necessary, they are never the less recommended

Page 22: Zend Framework Introduction

Copyright © 2006, Zend Technologies Inc.

Input Filtering

Page 23: Zend Framework Introduction

Apr 10, 2023 # 23

Zend_InputFilter

• Security is a primary concern in Zend Framework

• As such, we provide facilities to clean and manage untrusted data in your applications via Zend_InputFilter and Zend_Filter Provides a number of methods for filtering data

against many common data types (digits, alphanumeric, alpha, phone, etc.)

Page 24: Zend Framework Introduction

Apr 10, 2023 # 24

Using Zend_InputFilter

• With Input Filter you can both test data types and retrieve filtered data easily

• Note, by default the source of the data and all of it’s references are destroyed when filtered

Page 25: Zend Framework Introduction

Apr 10, 2023 # 25

Zend_Mail

• Simplifies building and sending e-mail

• Supports MIME types and multipart e-mail

• Supports multiple transports and persistent connections automatically

• Supports large file attachments via the streams API improving performance

Page 26: Zend Framework Introduction

Apr 10, 2023 # 26

Sending HTML mail is now really easy

Page 27: Zend Framework Introduction

Apr 10, 2023 # 27

Zend_Search

• PHP 5 implementation of the popular Lucene search engine from the Java world.

• Simplified API

• Requires no special PHP extensions

• Fully compatible with the binary index format of Java Lucene 1.4 and above

Page 28: Zend Framework Introduction

Apr 10, 2023 # 28

Zend_Search Features

• Ranked Searching Best results always first

• Many Query types: phrase, wildcard, proximity

• Search by field (Author, title, body, etc.)

• Robust, and simple API One-method intelligent searches against indexes, or

complex OO queries if desired Index multiple document types, with different field

requirements

Page 29: Zend Framework Introduction

Apr 10, 2023 # 29

Using Zend_Search

• Using Zend Search is very easy

• The search engine also boasts a parser for google-like searching: zend php -java

Page 30: Zend Framework Introduction

Apr 10, 2023 # 30

Adding documents to the index

Page 31: Zend Framework Introduction

Apr 10, 2023 # 31

Cool things about Zend_Search

• The Lucene search engine allows you to index multiple document types in a single index, each with different index fields Index Individual documents with different searchable

criterion I.e. Index code samples by functions used, while

articles by title, author, and keywords in the same index

• Because it is 100% compatible with Lucene 1.4+, it is compatible with all pre-created index files

Page 32: Zend Framework Introduction

Copyright © 2006, Zend Technologies Inc.

Questions?