Doug Brown has posted a new review of a book by Michael Kimsal, the “PHP Job Hunter’s Handbook” (from php|architect publishing).

Michael Kimsal’s new book, PHP Job Hunter’s Handbook. I pre-ordered this book a few months ago, and read the PDF version all the way through before I received my hard copy. […] It wouldn’t be extreme to go as far as saying that the book covers too much territory, but for it only being 106 pages, it’s a fair conclusion.

Doug lists some of these topics (like how to find a full-time job, contracting, freelancing and some advice from other developers/those on the hiring side). He looks at what it does have and doesn’t have as well as his recommendation on if you should buy it or not.

John Mertic passed along a note about a new post to his blog detailing how to enable IMAP support for PHP on an OS X machine.

With the release of Mac OS X 10.5 Leopard last fall, Apple (finally) included a modern version of PHP (currently version 5.2.6 as of this writing). […] However, the default install of PHP that Apple included didn’t include all of the available PHP extensions. Most notable is the IMAP extension, which is used in SugarCRM for the Campaigns and Emails modules. However you can build this extension and have it loaded dynamically, without affecting the rest of the default PHP install.

He shows where to get the packages and libraries you’ll need to get the support working. The method involves building a shared module and including it to be loaded in your php.ini. This way it doesn’t disrupt anything the current build has and you don’t have to recompile everything over again.

John Mertic passed along a note about a new post to the SugarCRM developers blog detailing how to enable IMAP support for PHP on an OS X machine.

With the release of Mac OS X 10.5 Leopard last fall, Apple (finally) included a modern version of PHP (currently version 5.2.6 as of this writing). […] However, the default install of PHP that Apple included didn’t include all of the available PHP extensions. Most notable is the IMAP extension, which is used in SugarCRM for the Campaigns and Emails modules. However you can build this extension and have it loaded dynamically, without affecting the rest of the default PHP install.

He shows where to get the packages and libraries you’ll need to get the support working. The method involves building a shared module and including it to be loaded in your php.ini. This way it doesn’t disrupt anything the current build has and you don’t have to recompile everything over again.

Anis Ahmad had a problem. The Zend_Paginator component of the Zend Framework, while powerful, wasn’t quite working right. Bugs popped up when he used a join along with a Zend_Db_Select.

One of the 4 Adapters for Zend_Paginator is DbSelect which uses a Zend_Db_Select instance. Now, the problem occurred if I need to have some calculative data from other tables and use join with the Zend_Db_Select object for them.

He gives an example of a join that he performed with the component, the details of the “behind the scenes” code and why it happened that way. He also offers a solution (before the Zend_Pagination component was patched for it, of course) of changing the count() method it uses slightly to remove an unneeded part of the query.

On the CodeUtopia blog there’s a recent post with info on creating a custom event listener in PHPUnit that can help keep you database data completely clean.

When testing code which uses the database, you would usually want to make sure the database stays pristine for each test - All tables should be empty, as any extra data could interfere with the tests. You could probably write an extended Testcase class which automatically does this before each test in setUp and afterwards in tearDown, but it may have some issues. […] Luckily, PHPUnit has a way to add event listener that react to certain events.

It uses the TestListener interface to make the event handler that (with the help of Doctrine) starts up, makes the tables with data and wipes them out at the end.

Code for the sample listener is in the post and included is the method for checking to see if you even need to use the database or not.

Chris Hartjes has answered some more questions his readers have asked in a new post to his blog today. This time the focus is on XML handling.

Welcome to the 3rd installment of me answering reader feedback questions. Today we deal with a topic that I deal with every day at my day job - working with XML in PHP.

He talks about SimpleXML (and how well it does its job) and their (his work’s) current method of handling the storage of XML in a database. He describes both their current process and his ideal one, how he’d want to interface with their eXist backend.

With the demise of the muxtape service, a new option has popped up - the ability to run your own version with a PHP application called OpenTape. Lifehacker has posted a guide to getting this software set up and working.

Beloved music playlist hosting service Muxtape’s gone offline to “sort out a problem with the RIAA,” but if you’ve got some web server space, you can host, stream, and share your own digital music mixes Muxtape-style with newly-launched PHP web application Opentape.

It’s not a direct copy, but it’s pretty close (and pretty easy to get up and running). It’d PHP5 only, so if you’re still living in the past and only have PHP4, you’re out of luck. Their guide shows a sample installation on a Windows machine, but its not much of a stretch to follow along on a unix-based machine. You’ll also need the curl extension to get some parts of it working - it’s not required, though. They have a work-around for that too.

DevShed continues their look at using the CodeIginiter PHP framework to build a sample application in this latest part of their series - a look a paginating the database results from a query.

As you may guess, however, Code Igniter comes bundled with a robust set of core classes, which can be used to perform all sorts of clever tasks, such as working with databases, performing file uploads, validating user-supplied data, and so forth. […] I’m going to show you how to improve the MySQL-driven application developed in the preceding tutorial, since it’ll be provided with the capacity for paging database records, via the pager class included with Code Igniter.

He starts by reviewing the previous part of the series, pulling the data from MySQL, then shows how to push that through the pagination component to create a simple user listing.

Carl and Richard break out the microphone during Karaoke night (don’t worry) at the DoubleTree bar in Murphreesboro, TN, to talk to staff and attendees of the devLink Technical Conference (August 22-23).

The folks over at php|architect have officially released the schedule for their upcoming php|works/PyWorks conference happening November 12th through 14th in Atlanta, GA.

Since this year’s conference is a combo with PyWorks (Python topics), you’ll find presentations on both sides of the fence (as well as general web development topics).

PHP talks include:

  • Caching for Cash
  • Get Soaked: Streams, an In-Depth Look
  • The CodeIgniter Framework
  • Enterprise PHP

And Python topics like:

  • Building Web Applications with Grok
  • URL Mapping with Routes
  • IronPython: Python on .NET and in your Browser
  • Desktop Applications with Python and Dabo

Check out the schedule for the full list and the conference website for details on pricing, the area the conference is in and to register and reserve your spot today.

Next Page »