Zend PHP 5.5 certification studying

I somewhat recently acquired my Zend PHP 5.5 Certification (YAY!!) , and want to share my experience with studying and the test itself. First off, some thoughts on the test. I’m not the best test taker in the world, so to say I was nervous about this one is an understatement. When I entered the room, what followed was one step away from a strip search. I was asked if I had a phone, or anything else in my pockets to I guess help me cheat on the test. If my memory serves me correct, I proceeded to hand over my keys and phone to the friendly lady administering the test. This did not help out my nerves one bit.

The test itself was administered on one of their laptops. There are 70 questions, and you are given 90 minutes to complete them all. Most questions are multiple choice, and some are free text. The free text questions aren’t as scary as they sound. They typically just ask for a small bit of PHP that you’re asked to write out.

To study for the test, I relied heavily on the ZCE study guide. It’s basically an outline of what to study on php.net. I hit every bullet point, and looked on php.net for everything. During the process, I also had a folder of php scripts I wrote to make sure I understood what a function, concept, etc. is. It’s one thing to read it, but completely different to use it.

After taking my notes and writing PHP, I downloaded Lorna Jane’s flashcards. They were extremely helpful to pound the topics I studied down my brain. More importantly they helped me to understand what I did and did not know. Check out her blog post while you’re there. She has some great tips on studying for the exam. I didn’t purchase the sample question pack, but my guess is it’s worth the money.

My recommendation with the test is to schedule the exam as soon as you feel at least somewhat comfortable with the material. I did that, and it was nice to have a deadline to help pressure me into studying. Before I did that, I kind of procrastinated the studying, because there is always something more exciting to do. Don’t be afraid to fail, because even if you don’t pass the first time, you will without a doubt get to better understand the core of PHP throughout your studying. Good luck!

Overloading Zend_Soap_Client _doRequest()

I wrote a soap client a while ago using Zend Framework 1 that was consuming data, and needed to log each request for debugging purposes. Thought I’d share a couple of things that I learned.

class My_Test_Soap_Client extends Zend_Soap_Client
...

public function _doRequest()
{
$argList = func_get_args();
$options = $this->_getOptions();
if ($options['testsoapclient'] == true) {
$soapLogger = new Zend_Log();
$writer     = new Zend_Log_Writer_Stream($options['logginglocation']);
$soapLogger->addWriter($writer);
$soapLogger->info($argList[1]);
}

return call_user_func_array("parent::_doRequest", $argList);
}

/**
* Don't do this...just here for reference
*/
protected function _getOptions()
{
return array(
'testsoapclient'  => true,
'logginglocation' => '/some/path/to/log/'
);
}

I’m overloading the public function _doRequest() so that I can do the extra processing needed to do my logging. You’ll first notice func_get_args(). I’m using this for my own convenience. I don’t have to stay current with any new arguments that may come.

The other important bit is

call_user_func_array("parent::_doRequest", $argList)

This simply is calling the original parent _doRequest() with the $argList we obtained earlier.

Order by in Zend Framework

Came across a nice “gotcha” using Zend _Db in Zend Framework 1 if you’re being sloppy like I was. When you’re ordering by multiple columns, always make sure to use an array.

Bad:

$select->order('col1', 'col2', 'col3');

Correct:

$select->order(array('col1', 'col2', 'col3'));

If you take a look at the order function in Zend_Db_Select, it takes a mixed parameter (string or array) and operates on that. If you’re not seeing PHP warnings, you won’t notice that the parameters ‘col2’ and ‘col3’ are being ignored.

Zend Form presentation with ZF1

Well it’s been nearly a year since I’ve done the presentation, so what better time than now to show it off? I did this presentation on Zend Form using Zend Framework 1 at mkepug.

Download my slides: Zend_Form

Also, awesome new thing I learned! If you own a Mac, and want to present with it. ALWAYS bring your display dongle.

Modernizr: Your ticket to using HTML5 and CSS3

Modernizr LogoI first learned about modernizr on Andy Clarke’s post “What does browser testing mean today” where he discusses among other things his thoughts on why websites don’t need to be experienced the same in every browser.  Modernizr is a javascript library that detects what html5 and css3 attributes a browser supports.  The library is only 3.9kb in size and for the most part detects features rather than detecting which browser the visitor is using. Ask ppk why this is a good thing. Read more…

Adobe Version Cue causing insanity

CPU Utilization

I know this rule doesn’t apply to everyone, but Adobe just ruined the better part of my day with its’ Version Cue software and I feel like I need to warn others. I am running Snow Leopard 10.6 on my MacBook.  My processor started to hang right around 70%, which was causing the fan to max out.  The noise was driving me to insanity. Read more…

Adding multiple sidebars (and other elements) to your wordpress theme

Wordpress LogoUpdate: Marquex has written a plugin that takes care of all this without having to touch PHP. Check it out: Custom sidebar WordPress plugin

I’m going to show you (you, being the wordpress theme developer or modifier) how to add elements to your blog that will change based on which page you are on. A great example of this is changing which button is on for your navigation to indicate which section is currently active. I will also show you how to get multiple widgetized sidebars rocking for your theme. I’m going to make the assumption that you already know what wordpress pages are and how wordpress can act as a cms. I will also assume you know how to widgetize your theme. Onwards. Read more…