tiwari

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

description

 

Transcript of tiwari

  • 1. Introducing: Zend Framework John Coggeshall

2. Welcome

  • Today Ill be introducing you to the Zend Framework
    • What it is
    • Why were doing it
    • How to use it
    • Where its going
    • How to be a part of it

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 Frameworkisnt
    • A free-reign open source project
    • A religion

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,requiringas 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.

5. Why Yet another Framework?

  • Keep PHP competitive with other technologies
    • .NET, Java, etc.
  • Provide clean IP to enable commercial use
    • Real companies cant 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

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)

7. Theres no such thing as a free

  • Why spend so much time and effort on something, just to give it away?
    • Yes, were 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

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 Developers Zone (devzone.zend.com) use the preview release of Framework as their foundation.

9. The grail: Extreme Simplicity

  • Many of PHP 5s most exciting new technologies arereally simpleto use:
    • Simple XML
    • SOAP
    • Tidy
  • While the underlying technologies may be extremely complex, the end-user APIs are reduced to an extremely simple interface

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 shouldnt 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

11. Zend Framework from 10,000 feet 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

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!

14.

  • 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 $ svn checkout http://framework.zend.com/svn/framework/trunk 15. Installing Zend Framework

  • Installing the framework isveryeasy, 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 16. MVC Pattern

  • MVC, orM odelV iewC ontroller 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

17. Example Controller

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

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( [, ]);
    • $this->_getAllParams();

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)

20. Chaining Controllers

  • Controllers can be chained together to either break business logic out into components, or to otherwise redirect the user
    • $this->_forward( [, ])
    • 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();

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 isnt 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

22. Input Filtering 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.)

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 its references are destroyed when filtered

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

26. Sending HTML mail is nowreallyeasy 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

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

29. Using Zend_Search

  • Using Zend Search is very easy
  • The search engine also boasts a parser for google-like searching: zend php -java

30. Adding documents to the index 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

32. Questions?