My company needs to hire a PHP developer, but nobody has PHP knowledge in my company and we find difficult to test for PHP skills. If it were a C/Java developer I would ask him to write a quick implementation of the Game of Life, but PHP is a completely different language.

I saw this test with interest:

http://vladalexa.com/scripts/php/test/test_php_skill.html

Anyone else has more suggestions?

Code


Ask the candidate to write code
Ask the candidate to read code


If you do ask the candidate to write code make sure that: 


The code is non trivial but small
You allow access to the manual and the internet


If you do ask the candidate to read code make sure that: 


The code has some trivial errors
The code has some non trivial errors
The code works fine, but it can be easily optimized


You can use three or more different pieces of code, start from the simpler one and only advance to the next if you see that the candidate copes with ease. Throw in some recursion, to spice things up.

Resources

Ask for a detailed list of PHP resources the candidate uses. Books, blogs, forums, magazines, etc. That's how my current employers found out about StackOverflow. 

If the candidate mentions StackOverflow or Programmers, you should NOT ask or try to find out their username. If they wanted to advertise their reputation they would have included a Careers 2.0 link on their resume.

Frameworks

Every PHP developer should know of the most popular PHP frameworks:


Laravel
Zend Framework
CodeIgniter
Symfony
CakePHP
Yii


and be fluent in at least one of them. You can have a few code samples ready for each one and ask the candidate to read and explain them, after they tell you which one they are more familiar with.

Debugging & Profiling

I've always felt that PHP developers are lacking debugging and profiling skills (perhaps only the PHP developers I've worked with). If during the discussion you find out that the candidate actively uses xdebug, don't bother with the rest of the interview and just hire them. ;)

Input sanitization 

This is important. You can start with a discussion on why it's important and then ask for the most common methods to achieve it. This discussion will help you on what to ask.

Some hints: 


mysqli_real_escape_string is good
magic quotes are bad


PHP snafus

You can find a lot of PHP snafus in this excellent discussion. If you are interviewing for a senior position you should definetaly ask on some of those. Some examples:

PHP's handling of numeric values in strings: 

"01a4" != "001a4" // true
"01e4" == "001e4" // also true


Valid PHP code:

System.out.print("hello");


In PHP, a string is as good as a function pointer:  

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   


Unit testing

Need I say more?

Conclusion

A good PHP developer should combine a variety of skills & talents: 


A good understanding of HTTP 
A good understanding of Apache configuration (Even if you use a different web server at your company)
At least a basic understanding of JavaScript
A great understanding of HTML / CSS


The list goes on and on. Make sure you tailor the interview to the specific needs of the job opening, you don't want to hire just a good developer but a good developer that's great at what you immediately need him / her to do.
