Thursday 12 January 2012

Writing Less PHP Code With More Results

Most web development companies use their own or third party frameworks to improve their development process. If you want to work as a PHP developer in a company you will most probably need to agree to write your code using their framework. This article is for these developers and companies who want to build their own framework and improve their coding speed, the quality of their code and get paid more for less time. I will share with you the ideas we discovered in PIM Team Bulgaria while working on our PHP framework, but not the framework itself - you need to develop your own one which to suit the most your coding style. Our advises are valid for almost any other programming language.

What is a framework and why I need it?

Don't you get bored when you need to write same or similar types of code again and again? Do you hate when customer wants to change "some insignificant thing" but you need to change it in 10 different files? Are your scripts too long? Do you write "spaghetti" code? If you answer "yes" on some of these questions, then you need a set of functions and classes which will automate most of the tasks, reduce your code size and avoid copy-paste practices. That is framework. It is a set of classes and functions which you just include in your scripts and make your life of a web developer easier.

What to "put" in a framework?

Some people and companies tend to believe that everything should be generated by functions and classes and you should never have a "free flying" PHP code. As a result of that they put everything in objects and extremely complicated functions which try to handle everything for everyone. As a result the code gets hard to read, buggy, hard to change and slow to write and learn.

Other group prefers to write everything for the current situation, again and again for every project and file. They often copy-paste hundreds of rows to save development time and effort, but when they have to modify the code it turns into a pain. And all of this is because they are too lazy to create a framework.

The solution as usually is somewhere in the middle. You should be looking to optimize tasks which are repeated often in the project or in different projects. Here are the best propositions:

- Mail functions - it's terrible to see most developers putting all the headers in each place where they need to send a mail. Just wrap the mail() function and use the wrapper.

- Database wrappers - you MUST have one. Stop using the built in MySQL (or other DB) functions directly into your projects. What will happen if the database must be changed?

- Database functions - do you really need to type manually all the 50 field names of that table and then to manually fill the values from $_POST? Sure, it is often needed when the values come in a different way. But very often, especially in admin panels you just have a form with fields corresponding to the table ones and values in them. Just iterate through the database fields (hint: "SHOW FIELDS FROM table_name") and insert/update

- HTML code snippets - aren't you tired of creating or copy-pasting date dropdowns, checkboxes, normal dropdowns or radio groups? Create functions for each of these - it could accept parameters as name, values, selected name...

- Formatting specifics such as date, money, phone numbers etc. Yes, the PHP functions like date() allow you to format in any way. But what happens if you have dates on hundred places and the customers decide that instead of mm/dd/yy they want format "dd Month, YYYY"? Don't change it everywhere, don't use the MySQL data formatting. Create your own wrapper and use it.

- Admin panels - each and every admin panel includes screens for add/edit/delete various table contents. Why to do it each time? In PIM Team we created a class called table_editor which simply receives several arrays and arguments and handles all the operations on any complex DB table, including the HTML code for the editing web form in less than 20 lines! The admin pages don't need to look nice, but yet our table_editor allows your tables to look perfect with CSS

- File and picture uploading, resizing, thumbnails. You don't really write every time all the codes in your scripts I hope. It would be crazy. You need functions or class for these

- Project specific functions. Many websites have specific features like displaying category trees, specific dropdowns, small tables with user's profiles etc etc. You can and must put these in objects or functions and use across your projects.

Don't overdo your framework

You can't handle everything for every case. Maybe you can but this will make your framework heavy, slow to process and hard to use. The goal of the framework is to make your life easier, not some idealistic idea for pure OOP coding. You need to export functions and objects of things which you do often within different projects or several times in one project. You will only loose time if you try to handle some individual cases.

Article Source: http://EzineArticles.com/150773

2 comments:

  1. I actually enjoyed reading through this posting.Many thanks.





    PHP Training in Chennai

    ReplyDelete
  2. Industrial Training In Chandigarh
    PHP Industrial Training in Chandigarh

    Don't you get bored when you need to write same or similar types of code again and again?

    ReplyDelete