Passing the ZCE PHP 5.3 certification exam!

h1. Take the 200-530 exam and become ZCE PHP 5.3 certified !

p{margin-top:25px}. “According to Zend”:http://shop.zend.com/en/php-certification/zend-php5-certification-voucher.html , the exam covers the following topics:

* PHP Basics
* Functions
* Data Format & Types
* Web Features
* Object Oriented Programming
* Security
* I/O
* Strings and Patterns
* Databases
* Arrays

p. I will detail each topic as to what you should expect at the exam, however I will first tell you some basic information about the exam. Then I will tell you about the three most important changes of PHP 5.3 and another new feature I find very useful.

h2. Basic Certification exam information

p. It is composed of 70 questions that you have to answer in 90 minutes. Overall I find the time sufficient enough if you play it right. My exam strategy is to pass through all the questions answering what I can, as fast as I can, marking certain questions that you are unsure of for later review. This ensures that you will score the points for the questions you know the answers to and still get a chance to analyze and score the others.

p. The exam is composed mostly of single choice answers, but I found that it had more fill-in-the-blanks questions than the previous 5.0 version; expect around 5 of those. Most of them are about specifying a function name, but I also ran into php.ini settings. *Be sure to write the function names without the parentheses!*

p. Also expect around 10 multiple-choice questions, which usually (if not always) involve you choosing 2 out of 4 possible answers. Comparing the newer 5.3 exam to the old one, I found that the questions are now harder to answer because they eliminated most of the obvious wrong answers.

p. *Now let’s get into the covered topics:*

h2. PHP Basics

p. Not much to say here, you either know the basics or you don’t! (reading the “ZCE Study Guide”:http://www.amazon.com/architects-Zend-Certification-Study-Guide/dp/0973862149 , first or second edition, will help!) All parts of the PHP language can be tested in the exam and you’d better know all of them. There are a number of trick questions in the exam, but if you know the language well you won’t have any problems.
Remember to repeat at least some “php.ini directives”:http://www.php.net/manual/en/ini.list.php as you will receive questions about them.

h2. Functions

p. In the ZCE 5.0 exam, the parameter order in the functions’ definitions was very much tested. In the 5.3 exam I did not find any of the haystack/needle questions; the correct parameter order was assumed all the time for the string manipulation functions. However you still have to know what each and every function does, or at least what most of them do.

p. *Note*: Even if the haystack/needle order is not emphasizes upon, you will still have to know what number of parameters a certain function has, or if it accepts a certain variable or option; this is not vital for the exam, as I found only 2-3 questions asking this level of detail.

h2. Data Format & Types

p. You have to know “PHP’s Language Reference”:http://www.php.net/manual/en/langref.php by heart! I cannot tell you more about this topic… If you have enough experience working with PHP, or have a good memory, a good mind and you are willing to learn, you will have no problem learning all of this!

h2. Web Features

p. Not much to say here, this is basic web development knowledge; focus especially on forms, retrieving get / post values, setting and retrieving “cookies”:http://www.php.net/manual/en/features.cookies.php and understanding how “sessions”:http://www.php.net/manual/en/book.session.php work.

p. “Headers”:http://www.php.net/manual/en/function.header.php and “file uploads”:http://www.php.net/manual/en/features.file-upload.php / “remote files”:http://www.php.net/manual/en/features.remote-files.php are important areas to focus on for the 5.3 exam, mostly in regard to security.

h2. Object Oriented Programming

p. I encountered less questions about “Design Patterns”:http://www.php.net/manual/en/language.oop5.patterns.php than in the previous exam version. However I noticed a higher focus on *SPL*, with at least 5-10 questions involving the “ArrayObject class”:http://www.php.net/manual/en/class.arrayobject.php , “Countable”:http://www.php.net/manual/en/class.countable.php from the SPL Interfaces or the __Iterator__ and __Traversable__ “Predefined Interfaces”:http://www.php.net/manual/en/reserved.interfaces.php . *Learn these well!*

h2. Security

p. I think the security aspect is tested the same as in the old exam, not very extensive compared to other topics. For the exam, understand *XSS*, *CSRF*, *SQL injections*, *register globals*, *email header manipulation* (typically that the __From:__ header can be injected with bogus values if values from the user are not properly filtered), *remote code injection* (by loading files from remote servers when __allow_url_fopen__ is enabled and again user values are not correctly filtered) and checking for *valid file uploads* with the __is_uploaded_file__ function.

p. Understand the *”filter input escape output”* paradigm and remember that any content that comes from the *user should not be trusted!*

p. Learn which of the PHP global arrays contain user data ($_GET, $_POST, $_COOKIE, $_REQUEST, $_SERVER).

p. The “Security chapter”:http://www.php.net/manual/en/security.php of the PHP Manual is a good resource to understanding important security aspects affecting PHP.

h2. I/O

p. One part of input/output is working with files; learn how to *open/close file handles*, how to *write/append/read* to/from files and implications of the *file locking* mechanism.

p. Another part of this topic are the *input/output streams* and the *compression stream wrappers*; Again the PHP Manual proves that it is a very valuable resource, providing you with all the explanations needed to understand the “Streams concept in PHP”:http://php.net/manual/en/book.stream.php . I know streams seem easy to grasp and not so important, but *you will get your fair share of questions from the Streams topic in the ZCE PHP 5.3 exam!*

p. Also learn about *stream contexts* and how to apply them to functions like __file_get_contents__;

h2. Strings and Patterns

p. Learn the “type specifiers for sprintf”:http://www.php.net/manual/en/function.sprintf.php, the “date format characters”:http://www.php.net/manual/en/function.date.php and the “strftime format characters”:http://www.php.net/manual/en/function.strftime.php . Also learn as much as you can from the “Strings section”:http://www.php.net/manual/en/book.strings.php of the PHP Manual and also at least some basic “PCRE regexp expressions”:http://www.php.net/manual/en/reference.pcre.pattern.syntax.php .

p. Another part of the ZCE exam is *XML manipulation*. For taking the old 5.0 exam you had to know, SAX, *SimpleXML*, *DOM* and XPath plus SOAP Web Services and WSDL. In the new 5.3 exam the XML topic is very lightly treated.

p. Overall you can expect only 2-3 questions relating directly to XML manipulation, most probably from SimpleXML or DOM. *You can skip SAX, XPath and SOAP if you don’t have the time, but I’d least recommend knowing what they are*.

h2. Databases

p. *Basic MySQL knowledge is assumed for the ZCE exam!* However I found that for the 5.3 exam the SQL question base is very light, only concentrating on *PDO features*. If you do not know or do not have the time to learn all the mysql, mysqli and PDO extensions and their functions/methods, “concentrate on PDO”:http://www.php.net/manual/en/book.pdo.php as it will most surely be a part of the exam.

p. Also read about the “MySQL Native Driver”:http://www.php.net/manual/en/book.mysqlnd.php , a new feature of PHP 5.3.

h2. Arrays

p. This is one of PHP’s power features and has it’s rightful place in the ZCE exam.

p. *You have to know* “array manipulation functions”:http://www.php.net/manual/en/ref.array.php *by heart!*

p. You will get a good number of questions relating to arrays and/or array manipulation.

h2. PHP 5.3 topics

p. It is assumed that you know the newest PHP 5.3 features. The three most important features that are tested in the ZCE PHP 5.3 exam are:

* “namespaces”:http://php.net/namespaces ,
* “closures”:http://www.php.net/manual/en/functions.anonymous.php (or lambda functions),
* (and) “late static binding”:http://php.net/lsb

p. Go over them and understand how they are used and what they are used for.

p. Another important change implemented in PHP 5.3 is the “new improved garbage collection mechanism”:http://www.php.net/manual/en/features.gc.php . Compared to older PHP versions it cleans the memory allocated during cycles, thus eliminating memory leaks.

p. If you have the time, “read and understand all of PHP 5.3’s features”:http://php.net/releases/5_3_0.php !

h2. Taking the ZCE PHP 5.3 exam !

p. I hope that my article will inspire you into learning for and taking the ZCE certification exam!

p. You can purchase a “certification exam voucher here”:http://shop.zend.com/en/php-certification/zend-php5-certification-voucher.html or you can locate a “Vue Testing Center”:http://vue.com/zend/ near you and register directly!

p{margin:0;}. *DISCLAIMER*: Every ZCE exam is unique as the questions are randomly pulled from a pool of questions, thus you might have a different set of questions than me, leading up to a different ratio between the listed topics.

p. If you master these PHP fundamentals: *Functions*, *Data types*, *OOP*, *Strings* and *Arrays*, you should not have any problem passing the exam and attaining the ZCE certification!

p. If you have any questions you can “contact me”:mailto:mihai.bojin@gmail.com (but please *DO NOT ask me for exam questions*, as that is stricly forbidden by Zend and will most likely result in getting our certifications voided and we will probably be banned for life from taking another ZCE exam!).

p. Good luck to you!
*Mihai Bojin*
“ZCE PHP 5.3, ZCE Zend Framework”:http://www.zend.com/store/education/certification/authenticate.php?ClientCandidateID=ZEND009783&RegistrationID=228649104