- 1. Introducing: Zend Framework John Coggeshall
2. Welcome
- Today Ill be introducing you to the Zend Framework
3. Getting Started
-
- 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
-
- A free-reign open source project
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
- 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:
- 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
-
- 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)
-
- 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
-
- PDF generation and manipulation
-
- RPC / Web service support
14.
- You can either get the framework preview release or check out
the latest repository version
- Preview Release:http://framework.zend.com/
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
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
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
-
- 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
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.
- Requires no special PHP extensions
- Fully compatible with the binary index format of Java Lucene
1.4 and above
28. Zend_Search Features
-
- Best results always first
- Many Query types: phrase, wildcard, proximity
- Search by field (Author, title, body, etc.)
-
- 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?