Guides and Tutorials for Learning PHP

Note: This guide assumes you already have an understanding of HTML/CSS. It is highly recommended that you understand HTML/CSS before learning PHP. Freecodecamp offers practical tutorials in learning HTML/CSS/JS.

New to Programming, New to PHP

You're new to the world of programming and wish to cut your teeth with PHP. You already have the fundamentals of HTML/CSS.

Experienced Programmer, New to PHP

You're already familiar with programming, but want to add PHP to your skillset.

Intermediate

After getting the bssics under your belt, here are some other resources to help tie it together.

Security

Keeping your application secure is important! To quote OWASP's Top 10 2017: the harm [of a vulnerable application] that is caused may be of no consequence, or it may put you out of business. Ignoring your application's security is not a valid defense in protecting yourself.

Database Interaction

There will likely become a time that you'll need to interact with a database. PDO is best suited to this task.

Advanced

Alright, you've made it this far, and the quirks of PHP haven't scared you away. Here's additional material to further your learning.

Development Environment

PHP isn't the only thing you should learn! A useful skill is knowing how to set up your own development environment without using XAMPP. Below are guides on setting up different development environments. (Note that VM means Virtual Machine)

Vagrant

https://www.vagrantup.com/intro/getting-started/index.html - Vagrant is a software that allows you to set up a development environment VM quickly. You can find vagrantboxes that other people have created and uploaded, in which you can use instead of setting up a VM in Vagrant from scratch

Docker

https://docs.docker.com/get-started/ - another common development environment is Docker. It is an alternative to VMs because it does not require the setting up and maintenance that regular VMs do. It is able to do this through the use of containers.

Rolling Your Own VM

The options below are guides on setting up a development environment from scratch using a VM on your computer.

Linux

In regards to troubleshooting in Linux, Google is your best friend. Seriously. If you have an error or problem, google the error or the nature of the problem, 90% of the time, someone else has encountered your situation as well, and you can find an answer pretty quickly. 10% of the time, it's a weird issue, and you'll either need to do more digging through google with some clever keywords, or ask someone.

Some other notes...

If you have an aversion to Oracle products, you can use mariaDB instead of MySQL which is virtually the same as MySQL, except that it is not owned by Oracle.

Lastly, this guide explains how to set up shared folders in Virtualbox from Windows. It took me a lot of digging to find it, and it was extremely helpful for me.

Book Recommendations

Most of these are not specific to PHP, but if you're serious and dedicated to learning how to develop, here are some books that will help you. I've chosen not to provide links to these books, as your preferred method of purchasing books may be different than mine. Googling each book will give you options on how to purchase them.