Tools of the Trade for PHP
This is obvious, but I wanted to mention that the faster your computer is, the faster you can work. Compatibility with free, open source programs is a must as well. That said, I recommend either Windows or Linux because they are the fastest and most compatible computing systems out there. A Mac will work fine, but I don't recommend them because I personally don't like the operating system and have had troubles in the past with speed and frustrations with the amount of software available. Therefore you probably won't find too many Mac related software suggestions on this site either.
A network connection.
This isn't a must right away, but you are going to have to be connected to the Internet at some point. Buy the fastest, most reliable connection that you can afford.
You'll need to have a server environment to run PHP if you intend to use it to display content on web pages. You can run php straight from the command line (w/o a web server), but if you're a web developer then you'll most likely be using PHP alongside Apache (a web server) and MySQL (a databse). Therefore it makes sense to install a local server environment or use a live web server from any number of web hosting companies. I recommend both because you'll want a local setup to learn and play in, and you'll need a live web server to show your genius skills to the world. I personally use all three methods listed below.
Local server environments.
- WAMP- I use WAMP for my local environments. It's what I started using and has worked very well for me.
- XAMPP- A lot of other people use XAMPP so you'll probably want to give it a try. I did and I personally didn't like it as much as WAMP. One thing I've read about XAMPP that I'm not sure you can do in WAMP is have multiple configurations of it, and it's also cross platform. This is how some open source geeks test their software. To each his own I guess.
- MAMP- Yes, going against my own advice I'm listing a Mac server environment. There is a free and a pro version. It wouldn't be a mac program if they didn't want you to pay for something, now would it.
Remote server environments
Here is a list of hosting companies that would work well for your remote environment. I suggest a cheap shared host to start out with if you're a total newbie. Once you have the skills to pay the bills you can pony up for VPS or a dedicated server.
- Blue Host
- 1&1 Internet Web Hosting
- Easy CGI
- Lunarpages Web Hosting
At Home/At Work server environment
If you have some Linux skills and really want to learn how to run a web server, then you can serve web pages out of your home or work, even if you have a dynamic IP address. If you have a static IP then you'll just need to point your DNS records to your static IP address. If you have a dynamic IP address then you can use a service like DynDNS which picks up your dynamic IP address whenever it changes.
Dynamic DNS Services:
A text editor
All you'll really need to start writing PHP is a text editor. To make it work, you'll need a server environment listed above. Here is a list of text editors that you can use to write php in.
- Notepad - yes, you can write php in notepad or any other basic text editor, you'll probably hang yourself after a while though.
- Notepad++ - this is what I use currently and really like it. It colors code, can find text based on regular expressions, has a plugin that displays a function list in the sidebar, code completion, etc. It's also the fastest editor I've used and can handle pretty large files, which is a big reason why it's my favorite.
- jEdit - java based (ie slow), and is a good one. Has all of the features of Notepad++ and more, but again, I found it to be slow
- Dreamweaver - if you have a copy of Adobe Dreamweaver then you can code php in it. It's actually not bad and if you are a designer/coder it can serve you quite well in your dual role. I used Dreamweaver for a long time to code php but I finally got tired of how long it takes to open the program and perform searches.
- BBEdit - I have a fondness for BBedit because it was my favorite program back in my Mac days. It's seriously the only thing I miss about Macs. BBEdit is basically the Mac version of Notepad++ but like all things Mac, you're going to have to shell out some dough for it.
- vi, vim, joe, pico, emacs - all of these are *nix based text editors that come with most *nix systems by default. I've taken the time to learn vi and vim, but not the others. If you are a web developer and use windows most then you should really take the time to learn one of these. It's just another tool to add to your bag of tricks.
Integrated Development Environment (IDE)
Some people swear by using an IDE for programming, but I've never gotten used to them** (probably because I came at web development as a graphic designer and started with Dreamweaver). Basically an IDE helps you with programming by, debugging your code, profiling code, and integrating with tools like SVN or CVS, and FTP. I just use my texteditor and local server environment for my IDE and it suits me fine, but if you want to try out one of these bad boys then here's the list. ** Update: I now use NetBeans and love it.
- NetBeans - I recommend and use NetBeans. It's a great IDE and the only one that I think isn't slow and buggy. It's got Subversion support and the huge plus of having 2 frameworks integrated (Symfony and Zend). It's got a great code completion feature for PHP, HTML, CSS and JS that all work in the same doc (ie. if you are in a CSS block, it completes for CSS, and if you're in a PHP block it completes for PHP). Try it, it's open source (free).
- Eclipse - the only other IDE I've ever tried and it made me hate IDEs (until I found NetBeans). I found it to be slow and buggy. It's open source (free)
- Zend Studio - Not free, but has good reviews, and it comes from Zend, the company that backs PHP.
- Komodo - Also not free, from ActiveState.
More info on PHP IDEs...
File Transfer Program
You won't need one of these for your local server setup, but you will with a remote one. I recommend using a secure transfer program because you never know who's watching or logging your network traffic.
- WinSCP - this is what I've used for about the past 2 years and haven't found a replacement. This is one awesome FTP program with a ton of great features. It uses SFTP, SCP and FTP protocols, can open Putty (SSH) sessions, can download/upload items in a queue and resume transfer if your connection breaks, has a command line interface that you can use to automate tasks, and a lot more. It's just a great program.
- FileZilla - this is what I used before WinSCP and is a good FTP program
- Dreamweaver - yep, Dreamweaver again. It's got FTP build into it, but I always found it a bit limited.
- ftp, sftp, scp, rsync - all of these tools come from linux and can be used straight from the command line. You should get to know each one. These will really help you out if you are working serverside without a graphical user interface.
Here are some additional tools that I use that aren't required, but really can aide in development.
- DiffMerge - Do you need to compare files or folders, then this cross-platform, free tools is for you.
- MySQL Workbench - MySQL offers a free tool to access databases through their GUI application. Not really php related, but when working with databases it can be helpful.
And that's it. Those are the only tools that you'll need to start programming in PHP, and isn't it awesome that everything besides the computer is FREE (sorry mac folks, but you have cash already, right?). So if you're living in a 3rd world country (or some parts of the US for that matter) right now and are reading this on a computer with an internet connection, then you have the tools right in front of your to start learning php, then your own freelance programming company, then world domination. Aren't computers great!