Advanced PHP Resources Version 2.0.1 alpha (work in progress - HF - 11 Mar 2004)
The following list of resources and pointers is intended to help PHP developers improve development technique. The focus is on more “theoretical” aspects of PHP rather than “Here’s how to do X” examples.
Selected Sitepoint Discussions Sitepoint’s Advanced PHP Forums provide a platform for discussing more advanced aspects of development with PHP as well exploring more theorectical aspects of software design. The purpose is to explore ways to make development with PHP, faster, more effecient, more reliable etc.
Event Handling Classes in PHP (aka Hijacking PHP’s error handler In reality, this is not the way to do things - error handling mechanisms tend to be slower that the “normal channels” in most programming languages plus, as you’ll see, things end up a mess. But fun anyway… And serializing objects to pass the the error handler is a useful hack for real error handling in PHP4.
Forms, fields, filters Different approaches to using OOP when dealing with forms, a critical chunk of any web application
Separate Logic / Presentation without Templates On the seperation that gets PHP programmers arguing as well as discussion of implementing MVC in “raw PHP” (i.e. without a framework providing the structure for you)
Java API as base for PHP library? Discussion of where to go with OOP in PHP. Some fascinating insight from many directions (plus WACT rears it head for the first time)
MVCP - MVC missing a layer? Thoughts, doubts, concerns and advice on MVC in PHP spanning no less than five pages. Some deep insight to what MVC is (or isn’t).
Object Oriented Programming and PHP PHP has evolved from a pure procedural language to one where the Object Oriented and Procedural paradigms co-exist happily. Many PHP developers learn a procedural style first and historically the majority of online material relating to PHP takes this focus. This a selection of PHP specific aimed at a PHP developer wishing to explore OOP.
Object Oriented PHP A straightforward discussion of PHP 4’s object model in context with general OOP theory, emphasizing all the key points and using examples PHP developers should relate to.
phpDocumentor (recommended) Generates API documentation from inline source code comments (like Javadoc). Output can be “templated” and, in additional to generating HTML, PDF and CHM is also supported. Written in PHP
PHPXref (recommended) Builds “cross reference” documentation of source code allowing you to view all the files where a variable / method / function is declared as well as the locations where they are referenced. Written in Perl.
Build / Deployment Tools
PEAR Package Manager (recommended) Allows you to install PEAR packages (over the network) plus bundle your code for installation. Execute http://pear.php.net/go-pear with the PHP command line executable to get started. Written in PHP.
PEAR::PackageFileManager Automates generation of package.xml files used by the Package Manager. Written in PHP.
Phing PHP build tool equivalent to Apache ANT. Worth investigating for large projects. Written in PHP.
<snip/> PHP-based installation wizard for professional release management of modular PHP applications.
UML and Design Tools
Argo UML UML diagram drawing tool with support for PHP stub generation (commercial spin off is <snip/>) - written in Java
Umbrello UML UML diagram drawing tool with support for PHP stub generation. Requires Unix / KDE
Dia Diagram tool with UML support - generate PHP using <snip/>]
<snip/> Generate PHP code from XMI documents, an XML format for describing UML
Accelerators
Turck MMCache (highly recommended) OPCODE Cache, script encoder, profiler and dynamic content cache (read persistance) all in one. Provides Windows binaries as well.
<snip/> Probably PHP’s most robust DB abstraction layer. There’s some leakiness around the API but if you want it to “just work and work fast”, this in the one.
PHP Frameworks In the most general sense, a framework is an environment for executing your code. You might say the PHP engine + web server itself is a framework. For web applications, providing a higher level framework, written in PHP, can prove beneficial in terms of making the code you write for that framework more structured, easier to maintain, faster to develop and so on.
MVC Frameworks Written In PHP Most (if not all) MVC style frameworks, written in PHP, are listed here. MVC (model view controller) is design pattern frequently applied to web based applications. It’s not the only way to go though.
Recommended Reading Books, magazines and online resources. Note: individual online articles are not referenced here, just sites with repositories of relevant info.
Books Bruce Eckel: Thinking in Java Has a very solid lead-in to OOP which, although written for Java, can be mostly applied to PHP as well, making decent in depth discussion for beginners. Also nice is it’s free to read online or you can pick it up from Amazon here
<snip/> Unfinished book on design patterns. Originally planned to use Java but most examples work with Python, bringing a dynamic aspect to it that’s relevant to PHP
GOF: Design Patterns A must read. Has become a modern-day classic on software development - the missing link on OOP. Provides the core design patterns which can be applied in most any programming language.
<snip/> Provides a discussion of sixteen design patterns which are relevant to web application development, while threading refactoring and unit testing into the narrative. Uses both PHP4 and PHP5 as reference examples. A more in detailed review.
Head First Design Patterns A different way of learning patterns, using a visually-rich formatted book. The book uses Java examples.
Magazines
php|architect Excellent US-based PHP magazine bridging the gap between books and typical online articles - much depth while to the point. Distributed in electronic and print formats.
International PHP Magazine Run out of Germany, this gets input from many of PHP’s core developers so has an inside track there but is still working to establish itself. Same company also produces the for-print German PHP Magazine (which has completely different content)
PHP Solutions Magazine
[small]Seen this in German on the local newsstands. Seems to be addressing the PHP hacker-ethic (and uses very bright colors on the cover).
Online Resources
The C2 Wiki Excellent starting point for investigating any software development “buzz”. This is also the “mother wiki” (where wikis began), developed by Ward Cunningham.
Martin Fowler’s Bliki Martin Fowler’s (source of many a book on patterns and software design) Blog / wiki
Manageability Lots of interesting snippets and insight scattered around here. And <snip/> is entertaining backlash.
Selected PHP HOWTOs Collection of online articles / examples for how to solve particular problems. Focus is on subjects which are either harder to grasp (e.g. XML related), required knowledge (e.g. Security) or PHP application design related.
PHP5 PHP5 represents a shift in paradigm for PHP, bringing it closer to Java in terms of it’s object model (at least from the point of view of a PHP developer). This is a collection of articles / resources discussing PHP5’s new features.
New Syntax and Core Features
<snip/> The official summary of all major features with short examples
<snip/> Chistian Stocker describes the major overhaul that’s happened to PHP’s XML support.
<snip/> Dmitry Stogov explains the new SOAP extension (which looks like its going to be default functionality for PHP5). Accessing web services doesn’t get much easier
<snip/> Ilia Alshanetsky describes PHP5’s built in database engine
<snip/> John Coggeshall introuces his extension for “cleaning up” HTML.
<snip/> <snip/> explains how he’s overhauled PHP’s ability to interop with Windows
<snip/> Zak Greant and Georg Richter looking at functionality offered PHP5’s second MySQL extension.
Installation / Setup
Installation/PHP5 Roundup of links to further information on PHP5 setup / installation
Communities and Blogs
[small]Blogs related to PHP and software development. Kept seperate from Recommended Reading as it may turn into a long list and, with blogs, signal to noise tends to be low. A leaky abstraction?
PS - don’t think it’s really necessary to list Sitepoint here - hopefully you know where you are…[/small]
PHP Community
PHP News
PHP Planet Aggegates various PHP blogs as well as general commentary of things going down in PHP
PHP Developer Picks up pretty much everything significant happening in PHP with useful summary
PHP Builder The first (?) major resource for PHP programmers outside the official locations. Things have slid a little since then (change of ownership) but still tons of good stuff
I have closed this thread so it doesn’t get flooded with messages that doesn’t really add anything valuable, and only makes It harder to find information. It has happend to similar threads before.
If you know of a resource that will be valuable to other members we will be more than happy if you want to tell us. Send a PM to one of the Programming Team http://www.sitepoint.com/forums/showgroups.php, and they will add it for you.
If you would like to thank HarryF for his initiative, send him a PM.