Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been programming in PHP for about a year and am at the following stage:

  • Have a good 'feel' for the language

  • Can create CRUD applications competently

  • Can utilize an MVC structure to allow for future expansion of code

  • Using the points listed above, I've created a number of my own applications for practise - including but not limited to; a forum, social network etc.

My question may be a little vague but should hopefully be answerable.

I feel as though there isn't anything else I would need to know about PHP to allow me to create websites, though I'm sure I'm wrong.

What advanced/complex PHP topics could I look at that have a real-world use and will allow me to enhance both my skill as a programmer and applications in general?

Recently I've looked a lot more at javascript/jQuery allowing me to give my applications a richer user interface which has been a great learning experience and proving very useful.

share|improve this question
add comment

closed as too broad by gnat, Bart van Ingen Schenau, GlenH7, MichaelT, Robert Harvey Dec 8 '13 at 20:05

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers

A list of topics comes to mind:

Under the hood

  • Learn to write PHP extensions. More of a C skill, but quite useful.
  • Learn to use HipHop.

Profiling your code

Learn them and learn to love them.

Static code analysis

A few tools you should be aware of:

Frameworks

Are you familiar with all popular frameworks? Can you built basic applications on each one?

Have you tried building your own RESTful micro framework?

Buzzwords

Clouds are all the rage nowadays. Have you tried setting up a PHP stack in the cloud? Or just utilizing a cloud storage service? You could start with Amazon S3 and their simple PHP client.

How about NoSQL? Have you experimented with the native MongoDB extension? Apache CouchDB? Apache Cassandra? There are so many to choose from, and they are all so different.

Setting up PHP

A very useful skill is to be able to set up a PHP stack in every major OS, including a few major linux distros. There are subtle differences between systems and VirtualBox will help you a lot.

And you should be familiar with setting up PHP under different web servers, like IIS and lighttpd.

Refactoring & TDD

Read Martin Fowler's Refactoring: Improving the Design of Existing Code and learn to better evaluate and refactor your code. You can scan through the online catalogue of refactorings, but you should really buy the book.

And how about Unit Testing?


There's always something new to learn but if you feel you've reached a point where there's not much more to do with PHP, you should really try to expand your knowledge in all the other tightly coupled parts of the ecosystem. There's a lot to learn about Apache, MySQL, HTML5, Javascript and CSS.

share|improve this answer
add comment

There are several things you can do to push your PHP knowledge beyond just building CRUD sites. While I could probably offer a lot more than 3 tips, here are 3 easy things off the top of my head you can do to help you expand your horizons in PHP:

  1. Pick a framework and learn it. I take it you're against this idea judging from this question you posted about frameworks in particular, however, most frameworks are built on solid patterns that are probably a good idea to emulate in your own code. I think the easiest framework to get started with is CodeIgniter, but the Zend framework is uber-powerful and if you get a handle on how it works, you will get a good idea about a lot of design patterns that will make you a better coder all the way around.

  2. Write a plugin for a PHP blogging/CMS platform. Wordpress and Joomla have very active communities that use and need plugins for various things. Lurk around on some forums and see what kind of plugins the users are asking for, then try to build a plugin that meets that purpose. Not only will you have contributed something valuable to the community, but you will also be forced to push yourself to implement things in PHP that you normally wouldn't tackle if you're the only one making up the requirements. Writing stuff to other people's specifications often forces you to learn lots of new things that you wouldn't have even cared about before. (Trust me on this. Case in point: What does deer hunting zoning laws have to do with mail merge? I actually wrote a PHP app where there was a definite association to this!)

  3. If you're dead-set on writing only your own stuff and not having to deal with other people's code (as is the case with my 1 and 2 suggestions), try your hand at creating your own caching method(s) in PHP. This will push you toward learning new optimization techniques and implementing algorithms that you wouldn't normally use for standard business logic. Test your cache with a custom-written benchmarking utility (that counts millisecond differences in execution time). Writing such a benchmarking utility will open your eyes to a lot of esoteric nuances in the way PHP executes code.

Again, I could go on and on, but these things come to mind.

share|improve this answer
    
minor nitpick, it's "Lurk around", not "Troll around". –  Adriano Varoli Piazza Nov 22 '11 at 15:56
    
@AdrianoVaroliPiazza You're right. I changed the wording from "troll" to "lurk" –  Trav Nov 22 '11 at 15:59
add comment

If you've been teaching yourself PHP and writing practice applications on your own for a year, it sounds like you're more than ready to try building one for actual customers/users. Especially if you felt comfortable building a sample discussion forum and a sample social network. The ultimate test is what those sample applications look like, how well they work, and how easy it is for you and others to maintain and expand them. If you're comfortable with the applications, then you're on your way. You can memorize every page in the PHP book; but until you've actually put your work up live, you'll never know what you need to know. Don't focus on the means to the end. Focus first on what the users/clients need your application to do - and then see how well you can meet those needs and what you need to learn and improve in order to do so. Learning the nifty toys and tools of the PHP community is fun to do on a rainy day. But you're just looking to take off from the runway. I think you're ready to give it a try.

share|improve this answer
    
this post is rather hard to read (wall of text). Would you mind editing it into a better shape? –  gnat Dec 6 '13 at 5:45
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.