Dave Marshall, a developer from Hull, England, has posted a few recommendations he thinks could help you land that next PHP job.
After reading this thread, I thought I'd spend some time writing about what I feel are some measures you can take to landing a job in PHP. This first part is going to concentrate on the kind of technical matters I think any PHP developer should at least have knowledge of, if not some kind of experience.
He suggests: as much programming experience as possible, experience with the full development lifecycle, knowing how to work with external libraries and frameworks, being able to adapt to development tools, knowing web application security, and some work with web services and a touch of system administration. He's not saying that you have to have all of these - just that the more you know, the better off you could be.
If you just can't get enough information on the Zend Framework and are looking for a good overview of where it's come from and where it's going, you should check out the latest issue of php|architect magazine with the cover article from Mike Naberezny.
In the article, I begin by introducing Zend's motivations for creating a framework and how it relates to their PHP Collaboration Project. More information on these topics can be found on the Zend Framework website. I then dive into a tutorial where I take a business scenario and show how the components included in the Zend Framework can be put to work.
The article demonstrates a workflow where invoice data is retrieved from a web service, an invoice in PDF format is then built from that data, and finally the resultant file is emailed to a customer. The components Zend_XmlRpc_Client, Zend_Pdf, Zend_Mail, and Zend_Search_Lucene are explored along the way.
You can purchase both a print and electronic (PDF) copy directly from the php|architect site - no need to subscribe and a single issue only costs $3.50 USD.
In a response to these comments made by Paul Jones concerning the Prado framework, Mike Naberezny shares his thoughts on the framework, the "PHP way", and how the majority of site functionality out there can really be divided up pretty simply.
RADO is getting some new attention because it was completely revamped earlier this month. It's certainly matured considerably since the contest and is the most well-known component framework for PHP. However, in all that time since PRADO was first introduced, the idea of a component framework hasn't been adopted by the majority of PHP developers. Why is that?
Although PRADO is a nice piece of software, Paul surmises that a component model as used by Microsoft .NET (Visual Web Developer now free!) and its close cousin PRADO is not the "PHP way" or "PHP spirit". For the most part, I agree with this. Although, I don't think it's necessarily a PHP-specific issue. I think it speaks to a larger architectural decision - how far to abstract out the HTTP request/response paradigm.
He summarizes the functionality in three different methods of handling: "page/file based", "action based", and "component based". He also notes that the interesting fact is that the "page/file based" method seems to be so dominant in the PHP world, only emphasizing the fact that PHP is more of a "get it done" language than anything.
On the Make Me Pulse blog, there's a look at PHP6's support of Unicode in the SPL (Standard PHP Library) TextIterator handler.
I've just install the last version of PHP6 dev and I've decided to test the famous new feature, the PHP Unicode Support. I will not explain new things about PHP6 or Unicode or TextIterator, it's just my discoveries test on this features.
He steps through the process he followed - enabling Unicode support, testing various output methods (including just an echo and using the TextIterator) as well as some of the manipulation methods (next/first/current) that can be used to get certain characters out of a string.
One thing that I think Symfony gets right is that it appears to use partitioned PHP code for its templates, in the spirit of Paul's Savant system.
I noticed in the Symfony demo that there is no separation of scope between variables passed to the template from the controller and local variables in the template. I'd like to see them scoped properly ("$this->products") but I can certainly understand why they did it this way. Using "$this->" in the template everywhere quickly gets messy.
He mentions a few other items he saw as well, including a way to correct the above mentioned problem (two ways - one more single-instance, the other more global).
On the WebMonkey site today, there's a new tutorial that looks at one of the most "pervasive" sites to come along in a long time, del.icio.us and how to interact with it's API via PHP.
Who's that with the catchy URL that's getting all the clicks?
Why, it's del.icio.us! No matter where you are on the "Web 2.0" lash or backlash, the pervasive influence of this little bookmark aggregator can't be denied.
The site offers a myriad ways of accessing its database, from HTML and RSS feeds, to JSON data, to browser integration of various types. Let's take a look at the public API, which offers flexible and easy access to del.icio.us.
In his example, he creates a script that, given the contents of an email message, filters out the URL, breaks it into its parts and sends it off to the del.icio.us API to be bookmarked under his account.
Mike Naberezny has posted this new item on his blog today with a look at why __get() is a perfectly good alternative to __autoload() in a class structure.
__autoload() is a magic function introduced in PHP 5 that provides a mechanism for on-demand loading of classes. After its inclusion in PHP, many argued that using such a feature is too magical or not a good design practice. Putting the religious debates over the appropriateness of __autoload() aside, its implementation does have one significant drawback: it is a function declared in the global scope. Once a function is declared, it cannot be redeclared. This means __autoload() can't be used effectively in shared libraries, since any other code could have already declared it.
Similar lazy-load functionality can be achieved on the class level by using __get().
He gives a short code example where the __get() call mimics the functionality of __autoload(), but the resulting object created is public, not global...
Skaldrom Sarg pointed us towards a new project he's been working on - an interface for PHP that allows it to use the UWA-Widgets from the NetVibes Universal Widget API system.
The PHP-UWA library allows a facilitated use of UWA-Widgets with PHP. It gives you access to the preferences and some convenience-functions. In theory, it should work with every UWA-compliant widget (even the broken ones which use html in the JS-Parts or the body). Mini-Apis do sometimes work too. An example is included.
Alex Netkachov has posted some of his own thoughts about Microsoft's recent SQL server 205 driver for PHP:
I can add that a few years ago I had bad experience with MS SQL PHP extension. It was just impossible to use it in production environment. These days MS understand that PHP is a very popular programming language and step forward to the community
He also includes a list of some of the things that the driver includes/makes possible such as the fact that it's not a PDO or OOP driver, that there's no source posted for it and that it does support data streams.
Jeff Moore has posted and shared an interesting graph showing something I'd never thought about comparing one language versus another on - the number of keywords it uses.
Well, I like programming language comparisons, so how could I resist this chart (via) promoting the simplicity of the io language by pointing out how few keywords it has. The interesting thing about this is that Java and PHP are tied on this measure of simplicity with 53 keywords.
Though not too meaningful, it is interesting to see how the different languages stack up in the number of reserved words you can't use for anything else. So, does that mean that Perl is the list limiting?
On the Zend Developer Zone today, Cal Evanslooks back some more at his experiences at this year's OSCON and mentions his personal favorite session attended while there - the PHP Lightning talks.
The absolute best session I attended at OSCON 2006 was the "PHP Lightening Talks". Some of the presentations were interesting, others were hilarious. Theo Schlossnagle's Why PHP Sucks was both. Theo is a facilitating to sit and listen to, as you'll soon see when I post my interview with him. He's also quite funny when he wants to be. His presentation was interesting. It was part tongue-in-cheek and part dead serious but Theo left it to you to decide which was which.
He also points out another post about the talk from Chris Shiflett where a rather large discussion started about the contents of Theo's slides. And Cal hits the nail on the head:
The talk was good, don't get me wrong, but the conversation it inspired is much more interesting.
Following up on some of his previous posts to the SitePoint PHP Blog, Harry Fuecks has posted this quick guide with some "hot UTF-8 tips" to share with the community.
As a result of all the noise about UTF-8, got an email from Marek Gayer with some very smart tips on handling UTF-8. What follows is a discussion illustrating what happens when you get obsessed with performance and optimizations (be warned - may be boring, depending on your perspective).
He talks mainly about using the native PHP functionality to avoid the mbstring issues that could arise by restricting locale behavior and using a fast case conversion function to handle strings correctly. The other tip involves delivery methods to those not able to recieve UTF-8 formatted content - checking their character set and responding accordingly.
The Zend Developer Zone today is asking for more real life case studies for the Zend Conference 2006, which will be happening on between October 29th and November 2nd in San Jose.
Do you have a great customer case study to share with the community? We've had a terrific response to the Call for Papers for the Zend/PHP Conference but we'd really like to include more real-life customer case studies.
You know you want to submit something, go on, help Zend make the conference as good as last years!
Chris points out today that the OWASP (the Open Web Application Security Project) is now publishing a PHP Top 5 list, detailing the top 5 PHP security concerns.
The PHP Top 5 is based upon attack frequency in 2005 as reported to Bugtraq. This information is a valuable insight into the most devastating attacks against the world's most popular web application framework.
The list is spot on, and Chris goes on to highlight some new PHP 6 security features and also his recommendation to use PDO to sotp SQL injection.
Elizabeth points out today that they have managed to extend the discounted reservation period for the PHP Appalachia Campsite.
Just to let all the slackers out there know - we've been able to work out an extension on the campsite reservations with the Cherokee/Great Smokies KOA until August 1. So you have a little more time to make sure you get the discounted rate when reserving your site or cabin.
PHP Appalachia is going to be the second PHP Un-Conference, and I wish I could make it, it promises to be a lot of fun, so, make your reservation now!
Ivo Jansch today gives an excellent look on proxies, decorators and delegates; three popular desigh patterns.
In PHP5, you can define methods in an object for intercepting calls to methods of an object and for intercepting access to object member variables. These methods (__get, __set and __call) enable the implementation of very generic proxies, decorators and delegators.
This is a great introduction to these three patterns and how to implement them in PHP
The Pro::PHP Podcast recently released it latest show, an interview with Adobes PHP+Flash/Flex evangelist, Mike Potter.
Mike has been at the forefront of the charge to educate PHP developers in the ways in which PHP can be combined with Flash and Flex technologies for extremely powerful, rich web applications. He has written for PHP|Architect and Zend's Devzone, and now seeks to get his message out to the entire community in this interview with Pro::PHP.
There comes a time in a developers life (well, okay, some of them) when they'll need to get one machine to talk to another in a quick and easy way. There's lots of options for this, but in this new tutorial, they'll focus on one - a combination of OpenJMS, XFire, and PHP.
recently got involved in a project where reliable communication between etherogenous platforms was required. Having already worked with JMS, I had to find a way to expose its services to the frontend(a PHP base web application). Some time before I had come across XFire, and had been looking for a chance to work on it.
This was that chance. I know SOAP can sometimes be cumbersome, but XFire really makes its use easy, and PHP well supports it( we'll use the nusoap library). In this article I'll make an introduction on how to easily merge together OpenJMS,XFire and PHP to get a generic, immediately usable messaging system. If someone will be interested in it, further articles will follow on this topic.
He introduces the technology, explaining what they are and the role they'll play. From there, it's straight into the code - first looking at the "functionalities wrapper" on the OpenJMS site, then how to expose this OpenJMS services with XFire (implementing a SOAP interface). Finally, the last piece of the puzzle - the PHP - comes into play with a simple set of calls surrounding the NuSOAP library to grab the data.
We finally managed to get the program online for the professional PHP track at the Free and Open Source Conference 2006, which takes place on the next weekend (June 24th and 25th) in Bonn, Germany. We will have 6 PHP related talks on Saturday, held by professional PHP developers, and a hackaton event on Sunday. Everyone is invited to join us and have a good time.
He lists the selected talks as well, including "Using Geeklog as a Web Application Framework", "SVG and AJAX", and "XMLReader/Writer".
Unless you're one of our syndicated visitors, them I'm sure you've noticed a pretty big change around here. We've gone through a pretty major overhaul here at PHPDeveloper.org, and not just in our look.
When Zend posted their first preview release of the Zend Framework, we had to admit that we were hooked. As has been mentioned several times by many people all over the PHP (and programming) community, working on a project is the best way to learn a new method/software. Our project was the redevelopment of this site.
So yes, PHPDeveloper.org is now up and running on the latest version of the Zend Framework (Preview Release 0.1.3 as of the writing of this post) including some new functionality:
You'll notice tagging has been implemented - rather than trying to have predefined categories to fit posts into, we've opted to go with tagging to make the site more flexible and easier to pull only the data you want.
Along with this, you can "feed" just about any page on the site now, so if you're only interested in tutorials on a certain subject, add tags to the URL and the "feed this" link will reflect it
We've also "gone back to our roots" and are focusing on what we do best around here - provide the latest PHP news to the community. The only think we've really lost in the process were the tutorials we had posted from before. But, if that's what you're looking for, I am more than happy to send them along!
Of course, with new features and new functionality comes some growing pains, so bear with us over these next few days as we work through a few of the issues that pop up. If you come across any or just want to drop me a line to let us know what you think of the new site, feel free to send it along to enygma@phpdeveloper.org. Thanks to everyone out there for their continued support of the site!
From The PHP Blog today, there's this tutorial covering the creation of a "pastebin" style website of your very own. Pastebins are a simple collaboration tool allowing the posting of textual data (most commonly code) to a public place anonymously.
This post will show you step by step, how to create your own personal pastebin. If you don't know already, a pastebin is a website that lets people share text. These kinds of sites are useful when collaborating with project members who are in different locations, because it lets you quickly share pasted data with all members, instead of emailing the text back and forth. Some popular pastebins are pastebin.com, and pastebin.ca.
They develop the backend first, creating a simple MySQL database to hold the information. From there, it's just a bit of PHP away from allowing users to post their information. It's a very basic kind of interface (no feedback capabilities or anything), but with a little tweaking, it could definitely do more.
The even is sponsored by the Israel Venture Association and includes other finalists like: Amimon, Discretix, Deep Breeze, Mazor Surgical Technologies, and Itemfield.
For more information, you can check out this month's edition (on stands June 19th) of Red Herring.
On PHPBuilder.com today, there's a note that was submitted by Anders Hammar about a handy new tool to convert PHP applications into Windows executable files - Bambalam.
Bambalam PHP EXE Compiler/Embedder is a free command line tool to convert PHP applications to standalone Windows .exe applications. The exe files produced are totally standalone, no need for php dlls etc. The php code is encoded using the Turck MMCache Encode library so it's a good solution if you want to distribute your application while protecting your source code.
The converter is also suitable for producing .exe files for windowed PHP applications (created using for example the WinBinder library, or with PHP-GTK). It's also good for making stand-alone PHP Socket servers/clients (the php_sockets extension is included in the static build).
You can find out more about this free tool from their website or just download a copy and start checking it out.
Ben Ramsey has a note about something that I'm sure the PHP user group has noticed - the release of the latest Atlanta PHP website.
Over the weekend, Atlanta PHP launched its brand new Web site and forum. We hope that this new site and forum will allow us to serve our local developer community much more effectively.
Also, something that I've not pointed out in any of the language posted on the Atlanta PHP Web site is that the new forum allows members to get in touch with each other, something the Drupal installation we had did not allow. Members can send private messages or even e-mail to each other using the forum software.
He also notes that he's gone back to Meetup.com and created a group there for PHP developers looking for a group in the Atlanta, Georgia area, but it's mainly just there to funnel developers back to the main site.
On the Zend Developer Zone, Cal Evans brings us the latest happening in the world of the Zend Framework with this week's summary of events on the mailing list and community, issue #11.
Among the happenings this week, he mentions:
a mailing list thread about Zend_Pdf barcodes
discussion about Zend_Mail and mass mailings
a call for testers for working with True Type fonts in Zend_Pdf
a propsoal from Thomas Weidner for Zend_Locale
a propsosl from Aissam Bazzaoui for Zend_Service_Google
Of course, this is by no means a comprehensive list, and there are many more details to be found in the full listing (and explainations for each) over in this edition.
In this new post on RelativeSanity.com today, J Barrett talks about "the problem with PHP", specifically that its "sucks" because PHP itself is a sort of framework started on top of a series of Perl libraries.
I've been meaning to comment on Snook's article for a while, but to be honest I wasn't sure what I wanted to say. Coming at it (at the time I first read it) from the newfound point-of-view that frameworks were the new greatest thing, it was a little bitter to swallow, but I found that I couldn't disagree with most of what he was saying.
As I've often found, the key to resolving two apparently exclusive hypotheses (frameworks suck vs. frameworks rock) that you also happen to agree with equally, is to form a third hypothesis that distills down the key points of both, and discards the semantic fluff that makes the original two seem incompatible.
He comments, using this blog post from snook.ca as a starting point, about the main reason frameworks "suck" - they're like learning a whole other language. He notes that PHP (and its frameworks) are so popular because of its low entry barrier, but that doesn't mean it's a good thing in the long run.
php|architect has a new note today about the next interview for the Pro::PHP Podcast with Jacob Taylor, Chief Architect and Co-Founder of SugarCRM.
Jacob defines, manages and develops the core Sugar Suite technology and has designed Sugar Suite to be one of the most conducive open source application projects for community development and contribution because of its modular architecture, high quality coding and superior scalability. Listen to Jacob explain why he chose PHP as the language to develop SugarCRM in, and how they are using it to make a huge impact in the CRM market.
If you'd like to attend the live interview (to be podcast later), head over and sign up today!
Continuing in the trend of completing documentation for projects, Sara Golemon has posted this information about completing the documentation for the libssh2 project.
After four months of (horribly boring and slow-paced) work, I've finally finished off the last of the libssh2 API documentation on the wiki. The material is still a bit rough and only helpful if you've already got the basics working (at which point you could have probably used the source documentation anyway). Next up I'll be working on a tutorial/example-usage section and maybe write up a few pages on basic secsh transport mechanics...
If you'd like to help contribute, check out the documentation wiki for the project and share your knowledge today!
In light of the recent release of the "Underground PHP and Oracle Manual" from the folks over at Oracle, Dan Scott has posted his own note about a pet project of his along the same lines - official task-oriented documentation for the pairing of DB2 and PHP.
By "task-oriented" I mean that, instead of documenting a set of objects and methods, the docs take the perspective of a developer and describe how to accomplish specific tasks (like "Connecting to a DB2 database from PDO" or "Calling a stored procedure" or "Retrieving multiple result sets"). I hope it works as both a good introduction to PHP development for DB2 users, and a good introduction to DB2 for PHP developers. And, of course, the same approach will work for Apache Derby databases as well.
He notes that he also finds it interesting that the Oracle folks went with the "underground" method of documenting its relationship to PHP, while the IBM documentation is integrated right in.
DevShed continues their "serializing objects" series today with part two of the series, highlighting the use of the sleep and wakeup functionality of PHP to help with the serialization.
After refreshing the concepts that I deployed in the first part of this series, it's time to focus on the topics that I'll cover in this article, so you'll know what to expect before you continue reading. In this second part, I'll explain how to use objects in conjunction with the "__sleep()" and "__wakeup() magic functions respectively, in order to get the most out of them.
They start with a look at defining self-saving objects with their ObjectSaver class developed earlier. Building on that reminder, they integrate the "__sleep()" and "__wakeup()" functionality to handle calls immediately before and immediately after the handling of the object. They then use this new functionality to create persistent objects, capable of maintaining values across page requests.
As mentioned in This post on the PHP Magazine site, Bill Ackermann has been added to the Zend team as the new Vice President of Sales.
Zend Technologies, the PHP Company, has announced that Bill Ackermann has joined the company as Vice President of Sales. Ackermann has held senior sales positions at both emerging and mature enterprise software category leaders, including Oracle, Netscape and most recently, Metreo. At Zend, Ackermann will oversee North American and Global Alliance sales and join the executive management team.
Ackermann joins Zend at a time when the adoption of PHP by developers and enterprise organizations is rising, the company says. Zend delivers products and services for developing, deploying and managing enterprise-class PHP applications, selling them directly and in partnership with large established companies like IBM and Oracle.
Always good to have bit of new, energetic blood in an organization, especially when it comes to working in Sales.
In php|architect's ART respository today, there's a new article from Marco Tabini himself about the creation of an Ajax rating system for your site.
A rating system is a great tool for any website. It serves two important purposes: first, it gives your users a way to interact with your pages-and interactivity is an important aspect of any website these days. Second, it provides you with a valuable feedback tool that you can use to gauge viewer interest in individual areas of your site. In other words... everybody wins!
He explains the concept behind the system before ever getting into any code - a visual representation of the rating users are giving a particular article/posting. With that out of the way, he gets into the HTML first, explaining how the table is laid out before giving the code to pull together the images and form one seamless one representing the correct rating. He also demonstrates the use of a "secret hash" to protect the script against abuse.
Next up, he creates the PHP/SQL backend to handle the Ajax requests coming back in from the page, and setting a cookie to protect (somewhat) against more than one vote. Finally, he gives the Javascript you'll need to create the Ajax connection and relay the JSON message back to the server on the rating the user chose.
Of course, the code is available for download as well.
In this article on WebProNews, Andreas Roell praises PHP, nothing several strengths and its flexibility while the fact that it's kept its reliability over time.
PHP has been able to stand its ground as a consistently implemented server-side scripting language. PHP is a general-purpose scripting language that is ideally suited for web developers, and can be easily embedded into HTML.
He mentions the advantage it has of being Open Source as well as flexible enough to run on just about anything out there. PHP can be more cost-efficient than other solutions and, since it is Open Source, you're not left waiting for a company to release their next patch when they feel like it (fix it yourself!). And, of course, what would an article singing the praises of PHP be without a brief mention of its competitor, ASP.
On the SitePoint PHP Blog today, Harry Fuecks has a few comments of his own about the just released PHP and Oracle Manual from the folks over at Oracle.
Chris Jones just announced the publication of the PHP and Oracle Manual (PDF) and from a high speed eyeballing, it's good-basically tells you everything you need to know to be able to do useful stuff with PHP + Oracle but with little assumed knowledge.
In fact it seems to be geared to the typical LAMP developer...
Harry does mention one thing he'd wished they've of added to this first edition - the SQL Developer desktop tool.
Scott Johnson is back today with another podcast, this time, focusing on methods for learning PHP. It's targeted at the very beginner level (PHP) developer to provide them with the tools and knowledge they'd need to advance in the language.
Ok then. That's like fate to a blogger telling you what to write and rather than JAT (yet another tutorial) I put together a podcast about how you can learn PHP. Not recommended for anyone who knows how to program but if you ever wanted to this will tell you how you can learn php (or any programming language).
He recommends three steps to follow to help you on your way:
and the most important step of all - code (practice).
People without experience in programming tend to think that you need ot learn everything about the language first, then try to go code something in it. Unfortunately, they realize (sometimes after a lot of work already) that that's just not the way to go.
Find a project - simple or hard - just find one. Even if you don't know the "best" way to do it, try. It can only help, and trust me, you'll learn more from doing than just reading any day. The book is a great starting place, and good for examples, but the real learning happens when developers do what they're meant to do - develop.
This new post on the Zend Developer Zone site today helps to announce the first CakePHP "Baking Day".
Things are really starting to heat up in the kitchen over at CakePHP as they announce their first (annual?) Baking Day "24 Hour coding contest". While the ingredients list in incomplete for Baking Day we do know that it contain equal measures of of inspiration, hard work, teamwork and don't forget to mix in a heaping helping of the secret ingredient, CakePHP.
Armando Sosa also gives more details on it in his blog, noting some of the basic rules about the contest - you/your team have to build an application in 24 hours using CakePHP to be judged alongside other apps.
They're also looking for people to help out with the contest as well - judge/sponsor/collaborator - just let Armando know. To get all of the details on entering, check out their site.
The book is 124 pages of Oracle/PHP goodness, covering a wide range of topics - all the way from introductory material on the extensions out to simple globalization within the data. It's not a complete or complex guide to all things Oracle, but it is definitely a great resource to get you up and running quickly. They also won't teach you SQL, so you'll probably want to have a background in databases already.
DevShed starts up a new series today for those looking to work with XML in PHP5 and just need something light and, well, simple. To help, they've posted part one of their "Introduction to SimpleXML" series.
In response to all the exciting features that I mentioned before, in this three-part series I'll be taking a close look at the most important functions of the "simpleXML" extension, using numerous code samples and clear explanations to put them in context, so you can understand how they work.
At the end of the series, you should be equipped with the proper background to start using "simpleXML" in your own PHP 5 applications.
They start with a method for getting the data into a SimpleXML object in the first place, reading in an XML file. With the object (and data inside) in place, they show how to query that data (as array elements), pulling out the bits you need. Combine these two bits of functionality into a simple class and you'll have the last step of part one of the series - building a basic XML parsing class.
In this new post from Dries Buytaert, he takes a look at some of the common web server configurations for running Drupal on a pre-populated site with lots of users/nodes/path aliases/comments/etc.
After a little bit of configuration, he did some testing (with ab2) on the following benchmarks:
In his conclusions, he notes that the slowest configuration for the install was the combination of PHP5 running as a module on Apache 2 without APC. The fastest - FastCGI on Lighttpd running the PHP4 version.
On GodBit.com today, there's a new review of the book "Pro PHP XML and Web Services" from APress by Nathan Smith.
uite some time ago, Apress sent me Pro PHP XML and Web Services to review, and I am just now getting around to it. First off, let me say that this book is huge. It weighs in at 936 pages, and the one I have is a hard-cover. The author, Robert Richards has done an amazing job at providing an incredibly comprehensive volume, covering a vast amount of information.
Anything I write in this review will probably not do the book full justice, simply because it is so extensive. That being said, I will attempt to briefly summarize its contents, so you will have an idea of just how much is covered.
He lists out the chapters (including "Simple API for XML (SAX)", "XML Security", "Representational State Transfer (REST)") before pointing out some of the things he specifically enjoyed about the book, including:
the author's method of "demystifing" the concepts behind writing and using document type definition files
his coverage of DOM manipulation
mentions of using web services and Ajax
a bit on web site development for mobile devices
The review is definitely positive, Smith making a high recommendation for any developer looking to enhance their knowledge of both XML in PHP and coordinating that with web services.
In his latest post, Lukas Smith talks about serializing data - some of the pros and cons about it, as well as his experiences with it in the development of his own framework.
In my own framework I have decided that there is plenty of structured data that I will never query on that I will just stick into the database as a serialized array. Now the other day I modified the auto type handling in MDB2's quote() method to automatically serialize array's if no type is explicitly passed to the quote() method.
I send out a question to pear-dev@ and it was not unanimously well received. So I sat down and pondered a more elegant approach. Actually there is already one approach implemented in MDB2 since ages.
This implementation uses a seperate module that abuses PHP5's overloading functionality to integrate it easily. He also looked into another solution, however - creating a "datatype map" to help with the custom automatic serialization of datatypes (not just dependant on the variable type like before). Be sure to check out the comments for more thoughts on the subject, including validation of the custom datatypes.
Mike Wallner shares with us today a method for getting pecl_http installed and correctly configured for your system.
As pecl/http 1.0 has finally been released and I had noticed that it's been packaged already by several projects like PLD, Gentoo and FreeBSD, I wanted to explain what one is going to gain respectively lose by using the different build/configure options for the extension.
He goes through and explains each of the conifgure options - enable-http, with-http-curl-requests, with-http-zlib-compression, with-http-magic-mime, and with-htt-shared-deps - giving about a paragraph worth of information of what it is and what it does for the package.
On HowToForge.com today, there's a new tutorial on getting suPHP to work with both PHP4 and PHP5 installations.
This tutorial shows how to install and use suPHP with PHP4 and PHP5. suPHP is a tool for executing PHP scripts with the permissions of their owners instead of the Apache user. With the help of suPHP you can also have PHP4 and PHP5 installed at the same time which I will describe at the end of this article.
The tutorial steps you through the process - installation of apache (with apt-get), disabling the built-in PHP, installing apxs, installation of PHP4-CGI, and, finally suPHP. From there, it's all just configuration of the different packages up to a finished, working install.
For those out there wanting to make the move from PHP4 up to PHP5, Robert Ames has posted a few things to watch out for.
So, I've spent some time upgrading the darwingames.com codebase to be PHP5 compatible. For those considering the transition (and language designers who are considering an incompatible source version upgrade), I offer the following observations.
He breaks it down into to categories - the good and the bad. Some of the items on either list include:
Alexey Zakhlestin shares with us in this new blog post, how the fast-cgi PHP developers think they're using isn't really a true FastCGI.
Most PHP programmers believe, that PHP has support for FastCGI. They refer to fastcgi-sapi, which is bundled with php since long ago, and which was recently reimplemented for PHP 5.1.3/4. This SAPI really does exist and actually working quite good. But… it is not a real fast-cgi. It is just an imitation of mod_php which is linked against fastcgi api, instead of apache api. So, it's time for you to ask: if it exists and works, then what am I talking here about? Let's start from the basics...
He talks about a history of how things go to where they are, starting back with regular CGI scripts, moving up through using server-based APIs, and finally to FastcGI, a method for overcoming a lot of the limitations of its predecessors.
With that look back, he turns his attention around and looks to the current situation within PHP. He talks about the sudden appearance fastcgi made in PHP's SAPIs, but that the implementation wasn't true. He suggests that the reasoning behind this "fake" implementation was for the sake of speed. He also notes, however, it's his opinion that true FastCGI support in PHP will be a requirement for future large-scale applications.
Over on H3rald.com today, there's their look at a new player in the PHP "inspired by Rails" framework category - and they're pretty impressed.
Someone recently added a comment to my article about Rails-inspired PHP frameworks pointing out that I forgot another Rails-like framework, in my round-up. He obviously posted a link to this rather mysterious Rails port in PHP and spam or not, I'd like to thank this guy for letting me know of the existance of Akelos, a new PHP framework which seems simply too good to be true.
He goes on, describing first some of the features the framework provides (tranasctions, code generation, template compilers, etc). There's also a list of other "goodies" specific to Akelos, including unit-tested source code, pure PHP support for Unicode, and distributed sessions using databases.
PHPit.net has posted yet another PHP-related tutorial, this time with a focus on test driven development.
There are several different ways of developing something. Most of us tend to simply start with a script, and gradually move along. Perhaps we've even laid out our script before hand, but we tend to stay at the developing phase, and don't really start testing when it's necessary. Basically, we develop first, and test later.
But this might not be the best way, and might lead to problems later. That's why some developers advocate a different way of developing called Test Driven Development (TDD), where by you test first, and develop later.
He uses the SimpleTest frameork to illustrate his points. He starts off with a simple example - settin g up the framework and creating a class to test a class, Biter. The testing class first just looks to see if the Biter class exists, failing before they create the class file it's looking for. With the help of a bit more code and a few more test examples, you get a good jumping off point for creating your own tests to evaluate your code.