
I took the PHP 5 Certification exam on Saturday. I passed. I did it because 1) I wanted to see if actually knew what I was talking about and 2) My life seemed a little empty without stressing for a midterm every few months.
There’s not that much detailed stories written about the test, the studying, and the process, so I thought I’d make some notes here.
The very first thing I did was to purchase PHP Architect’s Study Guide and go through it. That was a terrible idea and a waste of money. Why? Because Zend themselves offer a Certification Bundle. This bundle includes an exam voucher, 10 mock exams, and a study guide. They never mention that the study guide is the PHP Architect’s version. Only deep in the links, as I found out later, they list the authors, but again, no publisher nor even a title. If I had known this, I would have purchased just the exam and mock exams, saving me $20.
After I skimmed through the book, I used a mock exam and see where I was at. Good Lord, the questions were hard. I’m terrible at multiple choice exams, so this doesn’t help. More over, the vast majority of questions were like “Choose 3, Choose 2,” etc. At the end, they break the topics down into 12 topics, and give you a fail, pass, or excellent notation by each one, and an overall grade. I passed, but probably half the categories said “Failed.” They don’t tell you which question you missed, which is terrible, but at least you know where to concentrate your studies.
The mock exams are created by PHP Architect. They flat out warn you at the beginning that the mock exams are harder than the real test. The general consensus, as do I, agree with this. I would say that the easy questions on the mock exam are the standard questions on the real exam. Once you get over freaking out about the mock exams, take a deep breath and remember that everyone in the world says the real exam is easier. It’s true. It’s not a conspiracy.
Some of the topics covered in the mock exam were really obscure and weren’t covered at all in the study guide. Three questions that stick out were on SQLite. SQLite is not for powering websites. The average web developer has probably never touched it. I got lucky because that’s what I’ve been working with at Antenna for the past three months. Another example were the design pattern questions. There were questions on the Delegate Pattern and the Chain-of-Command Pattern. For both topics, the book covered more basic database and design pattern areas.
Now that I knew where I was, I went through the study guide in detail, taking notes along the way. It’s a decent book, but I do have some complaints. Some of the areas did not provide enough detail, nor do they discuss the “why” of certain things. It seemed hurried in these areas, and it’s up to the reader to study them more in detail.
After reading through the book, I concentrated on the mock exams. My strategy was to take the test, and for any questions I was even vague about, I would take a screenshot and research the questions later. This, by far, was the most helpful thing that I did. In researching the answer for one question, it forced me to know, in general, the whole topic. For example, one mock question asked what the three constants for command line streams are. In searching for the answer, I learned in detail about command line installations and modules.
This worked great for about three exams. On the third exam, I started to see a lot of repeat questions. On the fourth, the amount of repeats got ridiculous. If I had actually used all ten exams, I probably would have been able to get “Excellent” all around based rote memorization. There simply isn’t enough questions in their mock exam question bank. After that, I was pretty much done with studying.
I did enough to pass. You get 90 minutes for the exam. I finished in 45 minutes. All, in all, I think this is a very passable exam. I have a hunch that a lot of people that don’t pass simply didn’t study. Instead, they’ve been working with PHP for several years, and think they know everything about it. The problem is, if you’re working in one company, the techniques you use are often what you stick with. I remember listening to a podcast with one of the exam committee members. He admitted that he knew everything about MySQL and PHP, but his company had never touched PHP with any other database, nor parsed XML.
Looking back, I think my studying would be more efficient if I knew specifically what I should know:
1) Basics, covered in the study guide. Did you know you could do this:
function myFunction() { echo “Hi”; }
$a = “myFunction”;
$a(); //calls myFunction
Like in Javascript? Crazy, huh?
2) Arrays, arrays, arrays. You know need to know the details of array_udiff_uassoc(), but you should know basic sort, flip, reverse, merge, split, explode, push, pop, shift, and unshift, at least.
3) Strings, strings, strings. I hate string functions. I can’t keep them them straight, so I had to drill myself over and over. substr, strstr, strchr, substr_replace, strpos, etc., etc.
3) How to do an INSERT and SELECT with PDO and mysqli, and how to do them using bound parameters. They’re very similar. Just map it out.
4) How to load a page and parse XML DomDocument, SimpleXML, and XML Parser.
5) Use fopen to read a file and a url - fread, fget, too. Not one question on sockets nor cURL for network stuff.
6) Basic design patterns - MVC, Singleton, and maybe factory/adapter.
7) The security chapter of the study guide - the common security holes and how to plug them.
8) Objects and referencing. There seemed to be a lot of questions on this.
9) Not one question on iterators, maybe just my dumb luck.
10) On any thing you study regarding standard functions, know the relevant php.ini directives that affect them.
Keep these things in mind, buy the Zend bundle, and you should be fine.