I am not new to programming, been doing it for years but I want to become pro at PHP so what are some good things to develop that will help me gain experience?
I think best thing you can do is "find a job". You said you are not new so you probably know everything that I will write.
Why it is quoted? Because you meet other programers there, learn new tricks from them.
Working with presure on your back to finish it on time, for problem you search 10 top google page results... :D
Developing differents apps, different problems...
And when you reach your maximum. Change company...
In new company you will do that from the begining, but now you can give tricks to other people and learn a new one...
For begginers smaller companies are better, after that move to bigger one, and bigger and bigger.
In one point you will open your own company and hire people who are satisfy with opinion "this is nice, why to learn something new for just a little bigger paycheck..."
I think a great way to gain experience is to become very involved helping others with their problems. For example, on this site, you'll find quite a bit of PHP questions from a lot of members. Try to solve the problems. Try helping others through the process of solving problems.
This will allow you to come across scenarios that you may not exposed to by just getting a PHP related job.
If you're not new to programming, then I assume you'd have a good idea of what was required. Can you give an idea of your programming experience. How long, which languages? Which areas interest you?
Do as suggested by JorgeM. While waiting for the challenging questions, spend some time reading some good PHP books from O'Reilly Media.
Pretty much inspired by what I have been through after all these years.
Attempt to create an application based on what you have learned.
Critique the quality of your own codes. Evaluate your coding style, look for entries that can be refactored. Regularly update your application as you find and learn new techniques.
Search for an open source application similar to your application. Look at the source codes and compare your own source codes. Is your source codes equally the same as far as quality is concern? Is there anything you can improve on your codes? If so, can you do it now, or later as you gain more knowledge?
Don't feel content about being able to master procedural programming. Move on to the next level like OOP. The same attitude should be given towards OOP, Move on to the higher level like MVC frameworks and finally move up to HMVC. Attempt to gain solid understanding about MVC patterns, 5 common design patterns in PHP, front controller and dispatcher in PHP. Learn the separation of logics e.g. business and presentation.
As an option, learn twig, TBS, DWOO and Smarty. You will be in good standing as a candidate if you can at least do either Smarty or Twig.
Do not confine yourself in one type of PHP application. Try donwloading wordpress, os commerce, Zen cart, and other cart system. Spend some time in reading the source codes of these applications. Do the same with drupal and Joomla. Once you find out what is running inside the core of these applications, it is safe for you to assume that you are indeed doing really really well.
If you are planning to work between Sand Diego County and Silicon Valley in California. MVC framework knowledge is a common requirement, with solid background in Object oriented programming.
If you are good in C, C++, Perl, and JAVA, PHP was influenced by these languages. Actually, it is more of a derivative of C. Although JAVA is mentioned and the Cs, make sure not to write your codes that look like C or JAVA. Foreach loop in PHP don't need a counter.
Happy coding and keep on writing codes everyday and everything will be just so natural.
One last thing ( just added). Make sure you are familiar with the PHP-Fig and have strong knowledge in using composer. Be familiar with node.js and you are ready to become a leading developer.
Edited by veedeoo: more info added