Things a PHP web developer should know
During the time i learned PHP development, i had to learn a lot of things beyond just the language.
Here is a list of what i learned and what other people should do (to make things better):
- For first, in the PHP field
- OOP (object oriented programming – without this, i can’t imagine development of complex applications now)
- MVC (model-view-controller paradigm – while this is just a way of doing things, it proved to be very helpful in organizing code, and also many frameworks are built this way, so it won’t be too much hard to learn one after another)
- Good planning– it is not enough to have a bright new idea. You will have to sit down and start development on the drawing board.
- Enumerate pros and cons,
- Note any requirements,
- Create a todo list,
- Create a roadmap for your project and update it regularly.,
- Never start to code before this is finished.
- Data storage. If you work with data (what PHP is for if not for processing information? :))
- Understanding relational databases (such as MySQL, Oracle, PostgreSQL, MSSQL and all SQL databases)
- Solid SQL knowledge
- File operations, file systems knowledge (there are many different OS-es out there, and some with different file systems and structure)
- File types – without that knowledge, you wouldn’t be able to process different kinds of files.
- Data transfer. It is good to know a few methods of transmitting data. The more, the better. Here are the most commonly used
- HTTP protocol, and data tranfer methods(POST, GET) – The web wouldn’t exist without HTTP. At least not in the way we know it.
- FTP – if you create an app, you will have to upload it to a server. Or you have to download information (exported data, images, etc.). This is what FTP is for.
- XMLHTTPRequest (aka AJAX requests)
- Web services (WSDL, SOAP)
- E-mail – Many times you will have to send out messages in the form of e-mail messages. You need to know the pitfalls, and related security issues.
- Presentation. You will not write just data processing code. You will need to present that information to the user, and in a friendly manner. You may also need to create a responsive, rich user interface as that is just as an important part of a web application as the data processing and storing part.
- HTML (XHTML, HTML 5) – Most of the time, you aren’t returning info on the command line. You will have to send it to a browser, which has to interpret it and display it to the user.
- CSS (2.1, 3) HTML alone is just the structure of the document. It is just the raw info displayed, with no style. That’s what CSS is for. Use it to give a unique style to your documents and add a reader-friendly air to it.
- Image processing – Sometimes you will be needed to do a tweak for a site layout and need to make changes in or just export something from the design’s sources. Or just a picture needs some effects on it. You will need at least a limited knowledge of image processing software, and also a vector draw software (such as Adobe Photoshop and Illustrator). You will also need to have knowledge about programmatically processing images (automated resizing, cropping, squeezing, desaturation and more). SVG will be a great plus in helping you to create charts, and is “simple” XML. It is also a vector format, so it will have very good results.
- Code storage. You will not work always alone, and the projects can grow very large. You will need the knowledge about versioning, code repositories, tags, commits and checkouts. You will need to learn how to use version control software. You heard about Subversion or Git aren’t you?
- Testing– Test your software the best you can. It’s not enough to try it and see it running. Learn about the following:
- Unit testing – A well constructed unit test can save a lot of development time by eliminating long debugs. Learn about PHPUnit.
- Benchmarking and stress testing – Try your masterpiece under heavy load, to see, how it behaves. You may need to optimize things in your code.
- Deployment. Depending on which target OS and server software you’ll develop for, you will need also the following:
- Web server software (such as Apache, Nginx or IIS). Each of them has a different kind of setup, different config files. Don’t be lazy an learn your lesson. Read manuals, and find solutions. The web is fully loaded with them.
- PHP extensions – You may use PHP features which may or may not be installed on the target platform. You will need to know, which PHP feature is supported by which extension. This will help you give advice to your client or boss to have these extensions installed. The more you know about them, the better. If you have the access and the knowledge, is even better.
- Learn about the development language pitfalls, and vulnerabilities
- Search or ask for best practices
- Learn about XSS, CSRF, session fixation, SQL injection, RFI, other exploits, attack vectors.
- This is an extremely important part, as many things depend on it. People can lose money, their data can be stolen or counterfeited, company secrets can leak out, just to tell the most common cases.