For those who want to get started on the Zend Framework, Chris Shiftlett has just written a 6 page tutorial for the php|architect website. It is a good introduction to how the framework fits togethor, and will demonstrate how to structure a web application/site using the MVC (Model-View-Controller) approach.
Archive for the 'PHP' Category
After many weeks of waiting impatiently the Zend Framework has finally arrived – proving that it is not the "vapourware" it has been labelled by many.
The news came from Zend came just a few minutes ago, and includes the following announcements from Andi Gutmans:
We have finally updated the static PHP Collaboration Project page which now points to the individual projects which we have started:
The Zend Framework – We have released a preview release of the Zend Framework. I'd like to thank all the initial contributors who have been of tremendous help in getting this off the ground. There is a lot of work still to do, but after having already seen four applications build with the framework, it is clear that it already includes some very cool and useful modules.
The Eclipse PHP IDE framework – We have submitted a proposal to the Eclipse Foundation for a community based open-source PHP IDE framework. If all goes well in next week's creation review, we will be submitting the initial code drop shortly thereafter. In the spirit of Eclipse, we have already reached out to community members, including the PHP/Eclipse project, and have received great interest to join the effort.
The Zend Developer Zone – We have launched our new developer zone. The goal of this developer zone is to provide best practices with high-quality content from partners and the community. We already have many companies and invidiuals lined up to collaborate around this site who will share their knowledge for the benefit of the PHP community. The site will cover many aspects of best practices including Zend Framework use, interoperating with other technologies, and general PHP best practices around subjects such as security. The Zend Developer Zone is still under active development so expect further changes in the coming week.
Here is a run-down of the features/classes included in the initial Framework release:
Zend_Controller and Zend_View
These components provide the base for a simple MVC website and are already used on the Zend Framework site and several others. A front controller dispatches requests to page controllers. It is as minimalist as possible and it will become even simpler. The Zend_View component provides encapsulation for view logic. It can use templates written in PHP or can be combined with a third-party template engine.
Database access is a very light layer on top of PDO. Solutions for existing systems not using PDO (such as mysqli or oci8) are presently under development. Included are adapters, a profiler, a tool to assist with building everyday SELECT statements, and simple objects for working with table row.
The links on the sidebars of Zend Framework home page are generated using Zend_Feed. This component provides a very simple way to consume RSS and Atom data from feeds. It also includes utilities for discovering feed links, importing feeds from different sources, and feeds can even be modified and saved back as valid XML.
This component provides a client for the HTTP protocol and does not require any PHP extensions. It drives the web services components. In time, Zend will develop support for extension-based backends such as cURL.
The input filtering component encourages the development of secure websites by providing the basic tools necessary for input filtering and validation.
Easily convert PHP structures into JSON for use in AJAX-enabled applications.
Log data to the console, flat files, or a database. Its no-frills, simple, procedural API reduces the hassle of logging to one line and is perfect for cron jobs and error logs.
Zend_Mail and Zend_Mime
Almost every internet application needs to send email. Zend_Mail, assisted by Zend_Mime, creates email messages and sends them. It supports attachements and does all the MIME dirty work.
Portable Document Format (PDF) from Adobe is the de facto standard for cross-platform rich documents. Now, PHP applications can create PDF documents on the fly, without the need to call utilities from the shell, depend on PHP extensions, or pay licensing fees. Zend_PDF can even modify existing PDF documents. Create a sharp customer invoice in Adobe Photoshop, fill in the order from Zend_Pdf, and send it with Zend_Mail.
The Apache Lucene engine is a powerful, feature-rich Java search engine that is flexible about document storage and supports many complex query types. Zend_Search_Lucene is a port of this engine written entirely in PHP 5, allowing PHP-powered websites to leverage powerful search capabilities without the need for web services or Java. Zend_Search_Lucene's file format is fully binary with its Java counterpart.
Zend_Service: Amazon, Flickr, and Yahoo!
Web services are becoming increasingly important to the PHP developer as mashups and composite applications become the standard for next generation web applications. The Zend Framework provides wrappers for service APIs from three major providers to make the as simple to use as possible. There is working on more wrappers and engaging API vendors directly to make PHP the premier platform for consuming web services.
PHP 5's SOAP extension dramatically lowered the bar for communicating with SOAP services from PHP. Zend_XmlRpc brings the same capabilities to XML-RPC, mimmicking the SOAP extension and making these services easier to use than ever from PHP 5.
It's time to verify if this was worth the wait – click here to download the Framework (7.8Mb)
There was a rumor floating around a few weeks ago that suggested Oracle was looking at purchasing Zend. Articles such as this one on BusinessWeek talked about Oracle being in the market to purchase several Open Source companies – JBoss, Zend and Sleepcat Software were mentioned. Since then it has gone quiet, and I have just ignored it as just a rumor. However I am now beginning to wonder. Why? Several reasons…
First of all, Zend promised the first release of the Zend Framework by the end of February – which didn't happen. The forums for the Collaboration project are full of people asking what is going on, with Zend plainly ignoring everyone. The forums are also full of spam, indicating a lack of interest from the Zend team. Or is it? Perhaps it is a sign that Zend have much bigger things to think about – such as an Oracle take-over?
I found it quite interesting that a few days ago Zend placed a link on the PHP Collaboration home page pointing to an article announcing Oracle's purchase of HotSip and Sleepycat – and again highlighting Oracles interest in Zend. What is that link doing there I wonder?
Hmmm … time will tell.
There have been some very exciting developments from IBM over the last few weeks. Here are four areas of major interest to me:
AJAX Toolkit Framework (ATF) Project
In January 2006 IBM announced the ATF Project. The goal is to extend the Eclipse platform to allow for extensible frameworks and exemplary tools for building IDEs (integrated development environments) for the many different AJAX runtime offerings such as Dojo, OpenRico, and Zimbra. These tools will contain features for developing, deploying, debugging and testing AJAX applications, which is not so easy to do using development tools of today.
The tools built upon these frameworks will include some very exciting features:
- An embedded Mozilla web browser;
- An embedded DOM (Document Object Model) browser;
Open Ajax Initiative
On February 1st IBM and other industry leaders announced the "Open AJAX" initiative to promote the adoption of AJAX technology. This project is going to see collaboration between BEA, Borland, the Dojo Foundation, Eclipse Foundation, IBM, Laszlo Systems, Mozilla Corporation, Novell, Openwave Systems, Oracle, Red Hat, Yahoo, Zend and Zimbra.
The goal? To promote Ajax's promise of universal compatibility with any computer device, application, desktop or operating system, and easy incorporation into new and existing software programs.
On January 30th IBM introduced a free version of its DB2 database. DB2 Express-C is the same database as IBM's commercial offerings but the company places limits on what kind of hardware it can run on. It can be deployed on systems with two processor cores or up to two dual-core chips on AMD or Intel-based servers. The memory limit is 4GB but there are no limits on the size of database or number of users.
Already the LAMP-based community is showing interest in using DB2. For example ActiveGrid has just released an edition of its front-end development tool and server software to work with DB2 Express-C. DB2 offers some exciting functionality not found in PostGres or MySQL, such as the ability to combine PHP with DB2's native XML capabilities.
PHP Collaboration Project
This is now old news, but late last year IBM joined forces with Oracle, MySQL, Intel, Actuate, ADP, FileMaker, Schematic, StepUp Commerce, OmniTI, 100days.de, SugarCRM, bebe.com, and Marco Tabini (publisher of PHP Architect Magazine) in the PHP Collaboration Project. The initial objectives of the project are:
- Zend PHP Framework: A Web application framework which will standardize the way PHP applications are built. The framework will accelerate and improve the development and deployment of mission-critical PHP Web applications
- Engagement with the Eclipse Foundation: Zend is joining the IBM founded Eclipse Foundation as a Strategic Developer. Zend is now proposing to lead a project focused on PHP within Eclipse
I for one am enjoying seeing IBM partnering with other companies and projects to help formalise the future of AJAX and a PHP Framework / toolset. I haven't decided about DB2 yet for my everyday projects – but I will be taking a look for sure.
I found an interesting article on PHP and XUL being used to power LeMonde.fr – a leading information website in France. It is an excellent example of PHP and XUL being used at Enterprise level – and a nice case study to read about if you use these tools.
The site receives around 68,000 subscriptions monthly and an average of 70,000,000 (million) page views. Not bad. The entire website is powered by PHP, and they use XUL/PHP combined to power their Content Management System. The following statements highlight the benefits from using these technologies:
The system is now powerful, using 4 Linux servers at 20% cpu while it was using 4 Sun servers at 70% cpu before. Development time has been divided by 2 and number of bugs by 3, in addition to the excellent documentation and support available in both XUL and PHP Communities.
You can read the full article here.
This week I discovered three very useful tools built in AJAX. Here they are for my own future reference – and maybe you will enjoy these as well:
- WizLite – this very nifty tool allows users to collaboratively highlight important passages on a page on the Internet. Users can attach notes to their selections. Wizlite is activated by a bookmarklet or Firefox toolbar extension.
phpFunctions – an AJAX interface to quickly look up a function and then load the details from php.net.
Are there any similar tools out there that you would like to share?
Researchers (Hayes, Bloom) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. So … how long have you been programming? How would you rank your ability? Check out this interesting post to see one authors view of how to rank yourself or others. Could be interesting to think about if you employ programmers as well…
In a recent Webcast, Zend showed off the syntax for their upcoming implementation of ActiveRecord. However the syntax shown is simply not possible in PHP5 – which has lead to a number of questions and comments from the community. Check out this post from Jeff Moore for some interesting reading…
The PHP development team just announced the release of PHP 5.1.2. This release combines small feature enhancements with over 85 bug fixes and addresses three security issues.
The feature enhancements include the following notables:
- Hash extension was added to core and is now enabled by default. This extension provides support for most common hashing algorithms without reliance on 3rd party libraries.
- XMLWriter was added and enabled by default.
- New OCI8 extension that includes numerous fixes.
- PNG compression support added to the GD extension.
- Added –enable-gcov configure option to enable C-level code coverage.
- getNamespaces() and getDocNamespaces() methods added to SimpleXML extension.
For a full list of changes in PHP 5.1.2, see the ChangeLog.
As the upcoming Zend Framework is going to implement AJAX functionality I really hope that they will integrate the prototype.js library. I realise that this is also used by Ruby on Rails which Zend is trying to avoid giving the impression they are ripping off. However it is a fantastic library and it would be great to see it become almost a standard. It can be relied on as it is being actively developed and is involved in major frameworks at this stage. In addition there are number of JS scripts and projects already implementing prototype.js. So … here's hoping!