PHP Developer Tools and Workflow

Tea. Keyboard. Coding activate
Tea. Keyboard. Coding activate

Tools and workflow for PHP Development.

One of the reasons I started this my blog and this podcast was because I’m always interested in how people do their job.  There are a few podcast I listen to and follow, and people talk about things they are using or excited about but, it is always just a piece of what they are using – they might talk about a framework or an ide or this or that, but everything is piece meal and I sometimes wish they would talk about how it all fits together.  Well that’s the whole point of this podcast today – to share what tools I use and the work flow that I employ.

So I’m a Web Developer – I started developing in PHP  because my partner – who was the primary developer for our company decided to use PHP – this was 2003 – the dynamic web was still very young – PHP was the hotness and that’s what we went with.  I’ve never run into any issues with it – I know everyone has an opinion when it comes to languages – but I’ve not run into a specific instance where PHP wouldn’t work for us. So I’ve stuck with it all of these years.

What types of Projects do I work on? 

I mostly work by myself although I have worked with teams in the past.  I primarily have 4 different types of jobs I work on – Simple Websites (simple meaning – a website for a client), WordPress Websites (used for Microsites or for clients that want or need WordPress), Marketing Campaign websites or systems (usually thousands of pages, and need advance analytics and realtime results tracking), and Custom Web Applications (systems and apps that need a web interface – has users / reports / exports / all kinds of custom created madness).  I’ll walk you through my work flow and process for each of these.

Custom Website Development
– Using Custom PHP CMS system (Utilizes PHP, Mysql, Nginx, HTML, CSS, Javascript)
– Sites for Clients small and medium sized businesses (Lawyers, hotels, lawn care, spas, neighborhood associations – primarily small locally own businesses)

My typical workflow for these type of jobs
DESIGN
-start out with a static flat designed graphic in Photoshop.  I usually do around 3 designs based on graphical elements they provide me as well as content / color / general direction they give me.  I usually talk with the client, get some ideas, see what they like and I base my designs off of those discussions.

FRONT END DEVELOPMENT

  •  Slice up my graphics in Photoshop
  •  That process usually requires me saving my graphical files in different formats depending on the graphic usage (gif or PNG 8 for text / JPG for photos / PNG 24 for logos or graphics that need antialiasing)
  •  Once sliced I usually start a blank html / css file on my local machine
  • Preview in Firefox
  •  For layout like this I use lightweight editor / probably Sublime Text
  •  Start with placing elements first to match my design (HTML and CSS)
  •  As it gets more complicated I might move my css from inside my html document and put it in a separate linked file
  •  If this is a responsive site I may begin working with my CSS media queries at this point
  •  I just want to match my layouts as close as possible
  •  I might do some cross browser testing (although I don’t do much)
  •  After the layout is finished I will start integrating Javascript and advanced CSS (sprites / rollovers / gradients / web fonts)
  •  Flexslider / lightbox /
    (still primarily focused on layout and making sure it looks close to my initial design)
  •  once it looks good it’s time to move on to backend and functionality

BACK END DEVELOPMENT
The tools I use primarily for setting up my backend isTerminal on a Mac or PUTTY on a Windows machine

  • Terminal SSH into remote server
  •  create user and directory for client on FREEBSD server
  •  The directory will hold all of my site files
  • NGinx Entry
  • nginx.conf
  • setup  rewrites for file extensions
  • setup entry for the domain name associated with the site
  • test the changes
  • reload nginx
  • Mysql Setup
  • create database for the site
  • create and grant privileges for user on that database
  • flush privileges
  • exit out of mysql and out of my ssh session / close Terminal

Once I’ve set up my accounts and created my folders it is time to finish setting up the database for the CMS

  • Login to PHPMyadmin on our Server
  • Login with user I’d just created
  • CMS SQL Dump to setup the database for our CMS
  • Setup some default users for CMS
  • Setup an index page

WORK WITH THE  SERVER
The tool I use most for SFTP into the server is Transmit on Mac or Winscp on Windows
– Remote SFTP into server user account I’d just set up in terminal

IMPLEMENT CMS

  •  My company’s CMS is very light weight and versatile.  It has 2 files required for me to setup a new site – a config file with my clients credintials and a page template file.
  •  I take my local html and css and copy paste into my template file – placing functions where my dynamic content will populate
  •  Break up my flat HTML into this PHP template – Configure any other types of templates and added functionality into the live PHP file.
  • I work off the live server (bad – but way easier in this situation)
  •  Add any additional modules like Contact forms or management systems and plug them in.

CONTENT MIGRATION

  •  paste in content, build out pages, add content images
  •  If it is a big site I might put up some Password protection or setup a splash page on the index that will stop any unwanted traffic during this implementation phase of construction
  •  Finish out the site
  • Testing of forms or any functionality
  • Send to client for approval

CUSTOM WORDPRESS Installations
– Set these up on a different server
– Host Gator hosted
– Cpanel for user management
– 1 push installs

Designing is the same as above
Photoshop / slice / HTML CSS construction
Frontend Dev work
Sublime Text
SFTP through Transmit on Mac or Winscp on Windows

In this instance it would require breaking my flat file into a WordPress template.  Additional functionality is actually harder with WordPress because you have to adhere to WordPress’s Codex and it is a little harder (comparatively) to set up a WordPress site with custom functionality – I feel that if you are going with WordPress then you obviously have some widget or custom theme that you want to use so you are going to use those.

LARGE MARKETING PROJECTS
These projects might be email marketing or Pay per click advertising campaigns – They would have a landing page or thousands of landing pages.  These are usually setup for lead generation and are custom built to track analytics / reporting / KPIs / ROI /

– Still Designed in Photoshop
– Sliced / HTML / CSS / Front end stuff
– Developed on a local machine or dev server
– typical development is a MAMP installation on my mac pro
– Run the site on a local port
– Sequel Pro or PHP Myadmin for local db
– Sublime Text for php and local code

These are usually hosted on hostgator – either the shared hosting or a VPS

CUSTOM WEB APPLICATIONS and WEB SYSTEMS
These systems may be management systems, tracking systems – any kind of custom developed web application.  These systems are developed on the same web systems as all of the other stuff is on – Linux OS, Apache, Mysql, PHP  base
examples of this might be job tracker, lead managment, custom web applications

– Development is very similar Photoshop / html / css
for these systems I will almost always use an IDE to manage their development
– PHP Storm for development
– MAMP install
– Transmit for
– Git for Subversion and code management

FRAMEWORKS and RESOURCES
– JQuery – Google as my CDN
– Webfonts – Google
– Email – Google Aps (but I stopped recommending them once they got rid of the free plan)

I also do alot of email marketing campaigns.

EMAIL MARKETING PROJECTS

 

Email marketing campaigns to solicit prospects or leads. We typically use Email Brain for the actual email sending because their pricing really meets our needs – you pay per send – Our campaigns are very infrequent and is usually a one off or two off type of sends – they aren’t like newsletters or anything of a repeating nature.

In these instance I use
– Mysql to create and manage my records
– I find Importing and exporting is easy Mysql
– haven’t had any issues handling record sets in the hundreds of thousands
– export to csv
– Use Email brain for email marketing
– Configure my graphics to change out depending on the record set I import into Email brain
– this way we can tailor our marketing to each email we send
– I might change out the graphics depending on the records demographic information
– It has great tracking and reporting
– also it is really good at recognizing fake emails validating my data

So That’s how I do my job – I hope this has been informative – I really don’t know how standard my practices are – but I can assure you I only get looked at like I’m crazy about 55% of the time.