TechAlpine – The Technology world

Exploring PHP Best Practices

 

PHP Best Practices

PHP Best Practices

Overview: Right from its inception, PHP is widely used to develop web based applications. Since PHP is a scripting language one must follow some rules while developing.

In this document, I will talk about the best practices which are generally followed in the PHP world.

Introduction: PHP does not require any introduction. However, as in any technology, we must follow some guidelines while developing. These guide lines when put together form the best practice rules.

Following are the best practices which we should follow while working with PHP:

Error reporting should be turned on –

Error reporting is a very useful function in the PHP world. We must enable this while we are in the development phase. This helps us to identify the problems in our code. The most commonly used feature is ‘E_ALL‘ which helps us to spot all the warnings and critical errors. It must be noted that before we put our code into production, we should turn off this feature as this would expose all the potential errors on the browsers.

Use the DRY approach –

DRY stands for ‘Do not Repeat Yourself’. This concept is very useful programming concept and should be used in any programming language e.g. Java, C#, PHP etc. Using the DRY approach we ensure that there is no redundant code. A piece of code which violates DRY is referred to as WET solution. WET stands for ‘write everything twice’ or ‘we enjoy typing’. Let us have a look into the following code –

Listing1 – DRY & WET approach

[Code]

$mysql  = mysql_connect ( ‘localhost’,  ‘mysqladmin_uid’, ‘mysqladmin_pwd’ );

mysql_select_db( ‘DB_NAME’ ) or die( “Sorry !! No database selected!”);

[/Code]

This above code is based on the WET approach as the relevant parameters are hardcoded. Following the DRY approach, the above code can be changed to –

[Code]

$db_host = ‘ localhost ‘;
$db_user = ‘ mysqladmin_uid ‘;
$db_password = ‘ mysqladmin_pwd ‘;
$db_database = ‘ DB_NAME ‘;

$mysql = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

[/Code]

Indentation and Use of whitespace –

While writing code in any programming language, we must ensure that the code is properly indented and sufficient white spaces are given wherever required. This increases the readability of the code and helps us to maintain the code in a more efficient manner.

Meaningful and consistence naming standards –

As in any programming language, PHP experts also advise to follow meaningful naming standards. We have two major approaches while we ensure to implement this –

  • Using Camel Case – In this approach, the first letter is in lower case and first letter of every word thereafter is in upper case.

Listing 2 – Code snippet using camel case

[Code]

public class MyClass {

public void methodName(String argName) {

}

}

[/Code]

  • Using underscores between two words – In this approach, we put an underscore character (‘_’) between every two words. Using this approach, the above code can be modified as under –

Listing 2 – Code snippet using underscores

[Code]

public class MyClass {

public void method_name(String arg_name) {

}

}

[/Code]

Deep Nesting should be avoided –

Multilevel nesting reduces the readability of the code be it any programming language. Any programmer should avoid using deep nesting. Let’s see the following code snippet –

Listing 4 – Code snippet having multi level nesting

[Code]

public class MyClass {

public void method_name(String arg_name) {

if (is_writable($folder)) {

if ($fp = fopen($file_location_path,’w’)) {

if ($stuff = extractSomeConditionalStuff()) {

if ( fwrite ( $fp, $stuff) )  {

// …

}  else  {
return false;
}

} else {
return false;
}

} else {
return false;

}

} else {
return false;
}

}

}

[/Code]

The above code is a simple nested code. As we can see it is very difficult to figure which if block ends where. To have a better readability, let us modify the above code as under –

Listing 5 – Code snippet avoiding multi level nesting

[Code]

function method_name (String arg_name) {

// …

if (!is_writable($folder)) {
return false;
}

if (!$fp = fopen($file_location_path,’w’)) {
return false;
}

if (!$stuff = extractSomeConditionalStuff()) {
return false;
}

if (fwrite($fp, $stuff)) {
// …
} else {
return false;
}
}

[/Code]

Put adequate comments –

As in any programming language, make sure that your source code has enough inline comments. This is a standard practice and should be followed. This helps in further analyzing the code base as it is a standard practice that the person who is developing the code is not maintaining the same. Even if the same person is asked to make some changes in the code, inline comments will always be helpful to understand the motive of writing the code.  In order to maintain high class comment standard in PHP I would recommend you to get familiarize with some PHP documentation package e.g. phpDocumentor.

Do not put phpInfo() function in web root –

phpInfo() is a very important function and should be used with utmost care. Using this function any one can get the details of the server environment. It is always advised to keep the file containing phpInfo() function in a secured location. Once the development is done, it should be taken out of the code immediately.

Never trust the user –

If your application involves any user input, write your code in such a way that it can handle all sorts of possible inputs. A good approach to protect our application from hackers is to always initialize your variables with some initial value that may not be relevant in the existing business flow.

Use Cache mechanism wherever required –

Good programming approaches always suggest using the cache mechanism as the cache helps us to achieve better performance. In the php world caching is achieved using –

  • Memcached – an in memory key-value pair store used for small chunks of data.
  • APC – Alternative PHP Cache an open opcode cache for PHP
  • XCache – A fast reliable PHP opcode cache
  • Zend Cache – A collection of APIs for realizing advanced caching capabilities.
  • eAcclerator – Open source caching tool

 Avoid copying extra variables –

It is not a good programming practice to copy predefined variables into local variables having smaller names. This has an adverse effect on the performance of the application. Let us see the following code snippet –

Listing 6 – Copying extra variables –

[Code]

$desc = strip_tags($_POST[‘PHP description’]);

echo $desc;

[/Code]

The above code snippet is an example of copying a variable into a local variable unnecessarily.  This is not at all a good practice. The same motive can be achieved by using the following code –

[Code]

echo strip_tags($_POST[‘PHP description’]);

[/Code]

Use frameworks –

Frameworks are developed after lot of research works and hence they prove to be less problematic. They make our life easier as they provide proven solutions. In PHP there are lots of frameworks available. While development, we should make use of these. One of these frameworks which are widely used is MVC or Model View Controller.

Conclusion:

Let us conclude our discussion in the form of following bullets –

  • Best practices guide us to develop code in a more efficient manner.
  • Following best practices ensures better performance of the application.
  • As in other programming language, PHP also follows the best practices in the industry which ensures that the application developed is a good one.

 

Tagged on: ,

Leave a Reply

Your email address will not be published. Required fields are marked *


+ 9 = 10

TechAlpine Books
-----------------------------------------------------------