Hello there, I'm working on my first professional project. The fact is that I don't know which are the best tools to produce something serious (I'm talking about web-develop through PHP):

  • Are template engine like Smarty mandatory? Which one is "the best" (the most used, complete, documentated)
  • At the moment I'm developing on Notepad++ (mostly because I find it useful and complete) is there a better development tool? Or is just a matter of personal taste?
  • At the moment I'm studying JQuery and deepening my knowledge as regards CSS what other "mandatory" subjects can you suggest me?

This is what I can think of at the moment, have you any other suggestions? Thank you.

EDIT: As someone made me notice the question is a bit ambiguous. I know the basics (HTTP protocol, Java Script, CSS, HTML, OOP theory and practice etc...). I'm studying computer science at the University (and the project I'm speaking of is my thesis). I need advise on how the "real world" works (outside my basement).

+4  A: 

Agree with what Pekka is implying, which is that it's important to pick up another lang in addition to PHP. Please. Also, I can't see learning PHP without knowing stuff like Smarty. Notepad++, who cares there, each to his own. jQuery is fine though I might opt for plain vanilla Javascript before getting into a library. Even though jQuery makes things easier it abstracts a lot of stuff and what you really want is those Javascript mechanics.

I would also add a solid knowledge of the HTTP protocol as a must-have that some web devs seem to think is optional. You should know what a hard 404 is, and what content encodings are, and the different flavors of caching disposition, etc, etc, etc.

Above all, have fun!

Swingline Rage
Very true. Knowledge of HTML, CSS and JS is a must before even touching PHP. Unless you have someone doing that for you.
Don't think CSS and JS are mandatory because often times(if you are working in a team), the programmers program and the designers do the designing. But yes, a background in them are useful
+4  A: 

1 - The Smarty engine is very useful and probably the most popular in PHP application development.

2 - I use Aptana studio for PHP development. It's pretty complete and has nice tools coupled with it. It's based on the Eclipse IDE, so it's pretty customizable. The major drawback is that it uses a lot of resources.

3 - I recommend learning development patterns like MVC (Model - View - Controller) to get a good base of how data should be organized.

Also, look up Code Igniter, It's an amazing framework to work with (it uses the MVC pattern). Building something with it is really easy and very easily manageable. If you want simple tutorials, you can check on NetTuts for a serie of tutorials.

+1 for the MVC. OTOH I found Aptana to be painfully slow, has it improved recently?
Swingline Rage
+! for netTuts. very good site for tutorials.
+7  A: 

Don't focus on becoming a Professional PHP Programmer. Focus on becoming a professional web developer, and check out the What should a developer know before building a public web site? question.

Saying "I want to become a Professional PHP Programmer" is like saying "I want to be a professional painter" when you actually mean "I want to be a professional artist." Sure, at the end of the day both might paint and get paid for it, but what their customers expect of them is very different ;)

Good analogy. Don't mistake the job for the tool.
David Lively
+5  A: 

A templating system like Smarty isn't mandatory, since PHP is technically a templating system. However, it's not a very good one. It's clumsy, very easy to make mistakes with, and you frequently end up with an incomprehensible mess.

There are better alternatives than Smarty out there. I'm kind of partial to Twig, myself.

Using a framework is pretty much mandatory these days. Development with a framework is generally much easier and quicker than using raw PHP, once you've got the hang of how it works. Code Igniter's pretty good, although minimal. CakePHP is quite good, although seems very heavyweight at times. Kohana, Symfony, and the Zend Framework are pretty highly regarded as well.

+1 for frameworks, but I don't agree on the comment about templating
+1  A: 

Most web development includes some degree of database interaction, so good DB skills is always useful.

  • Basic normalization of tables.
  • Understanding Transactions
  • Knowing how to escape your values before insert/update/etc
  • write selects with joins how to avoid nesting database selects within code loops
  • differences between database and PHP dates (and how to work with them)


Mark Baker
+4  A: 

Specifically for PHP I'd recommend:

Learn a good framework. Depending on the size of the project, you can use Zend/Symfony or CodeIgniter/others for small ones. There are tons. I'd stick to Zend/Zymfony for something mid-sized and/or "real world".

In general these frameworks come with a basic template engine or you can plug in other ones like Smarty or Twig. I'd say it improves the code a lot. So, yes to your first question.

Also, notepad++ is amazing, but I recommend using an IDE if you're working on a project and not a simple 2,3 file script. I strongly recommend Netbeans. It has lots of teatures and it's really active. Check it out:

Since you're coding in PHP, I'd say you get to know the SPL (Standard PHP Library):

To sum up:

Strongly recommended to keep code clean and mainteinable.


Yes. SPL, and a lot more I can't think of now.

+1  A: 

My standard recommendation in questions like this, in addition to the excellent suggestions given in the other answers already, is to at least dabble with a strongly typed language like Java, C++, Delphi or C#, with a merciless compiler enforcing discipline - proper declaration of variables, definition of complete class interfaces etc. etc. I love PHP, but it is very permissive and sometimes still shows its templating language roots, and tends to seduce newbies into bad practices. (That said, PHP nowadays is a fine language and it is well possible to write very high-quality software in it.)

However, you say in your update that you do Computer Science at University, so I guess you are already getting your helping of at least one other language, and CS theory, and your focus is indeed which frameworks to use etc.