I recently passed the Zend PHP 5.3 Certification Exam, and just wanted to let people know what I did to prepare myself for the test. I already have 6+ years worth of experience using PHP, just so you know where I am starting from.
If you have done any research into the exam, then you will know that there are many different aspects of PHP you can be tested on. Just to clarify exactly what the topics are, Zend have a handy page which outlines them here. They also supply a pdf document which serves as a study guide (at the time of writing this it is still in beta 1.3), which can be found on the page, on the right hand side. This was quite handy for simply outlining to topics, however there were quite a few errors in it (example tests answers).
OK, now that’s out of the way, my first step was to read the Zend PHP 5 Certification book (I know it’s not for 5.3 however it was very handy):
Next thing I did was take a Mock test. I had previously purchased 10 Mock test from Zend for PHP 5.0 and so I took one of them. Lets just say my first score was not good.
So next thing I did was to read through the book again making notes as I went along on the things I did not know or was not 100% sure of. This came to about 20+ A4 sides! Shocking I know! And I thought I knew it all! Just to note about this book it does mention design patterns, which as far as I am aware, are not on the PHP 5.3 test. The main aspects I took notes on were (There are PHP 5.3 topics in here too which I added later on):
- Basics – Tags, data types (Octal, Hex, decimal, exponential etc), variable variables, operators (logic mainly, bitwise), Namespaces
- Functions – special function functions (func_num_args() etc), passing by reference, Closures
- Arrays – array operations, counting searching and deleting, flipping and reversing, pointer, soring, anti-sorting, stacks queues and sets
- Objects – PPP, auto-loading, SPL, reflection, special constants (__METHOD__), static methods and properties, abstract classes, interfaces, exceptions, interceptors (__get() etc), cloning, serialization (__sleep() etc), late static binding, SPL (ArrayIterator etc)
- Security – XSS, CSRF, SQL injection, Sessions security and hijacking, counter measures
- Web Programming – Session functions (setcookie() etc), $_FILES, headers (headers_sent() etc), HTTP authentication
- Strings – printing/echoing, comparison and length, replacement, print functions (sprintf(), fscanf() etc), regular expressions (and preg_* functions)
- Streams and Network – Resource types, file reading (fopen() etc), file pointer, csv files, XPATH, DOM, SimpleXML
And so after this I read my notes one more time and took another test which I did pass (just about). One thing that was worrying me at the time was that all this material is for the previous exam (PHP 5.0), so I was not very sure exactly how much different it would be.
I then turned my attention to the pdf mentioned earlier and made additions to them where appropriate. Another book I found really useful for this was PHP Object, Patterns and Practice:
It mentioned almost everything to do with objects except for Late Static Binding. It even had Namespaces in!
After having some knowledge of all the material I took more mock tests including the ones in another book, PHP Certification Practice Test Book (for PHP 5.0 exam):
All of this helped to build up confidence, so I then turned back to the pdf study guide. It mentions that the exam gives more credit to correct answers in certain topics over others, and so I made myself a check list of what to prioritise my learning for:
- 1. PHP Basics
- 2. Web Feaures
- 3. Security
- 4. Arrays
- 5. Objects
- 6. Functions
- 7. Strings
- 8. Input/Output
- 9. Data Formats and Types
- 10. Databases
I concentrated my efforts on 1-7 mainly, and just skim read through much of the rest. The weekend before my test I did 3 more Mock tests (online PHP 5.0) and felt pretty good about it.
After taking the exam, I can say that the format is very similar to the Mock tests of PHP 5.0 however with much more emphasis on Objects, Web Programming and Security. Not sure how well I did in the test except that I passed (tell you instantly when you finish)
Not sure if this will help anyone, but this is what I did. Some of you might think this is a bit of overkill, however with the questions being random, you can never be sure you know (in depth) what is going to be asked of you. I would not be surprised to hear of people failing their first attempt either just based on what you might be asked.
Thanks for reading