Define WSDL,SOAP and REST.

1. SOAP stands for Simple Object Access Protocol and REST stands for Representation State Transfer.

 2.  SOAP is a protocal and Rest is an architectural style.
 3. SOAP permits XML data format only but REST permits different data format such as Plain text,
     HTML, XML, JSON etc
4.  SOAP defines standards to be strictly followed but rests doesnot define to much standards like soap.
5.  SOAP uses WSDL (web service definition language) for describing the functionality offered by a web service
     and REST uses WADL (Web Application Description Language) for describing the functionality offered by a web service.
6. SOAP requests send using HTTP POST method because SOAP request is formally big and can not not be send in
    query string, REST requests can send using both HTTP GET and POST and due to which GET request can be cached here.
7. SOAP requires more bandwidth and resource than REST so avoid to use SOAP where bandwidth is very limited.
8. SOAP can’t use REST because it is a protocol but REST can use SOAP web services because it is a concept and can use any protocol like      HTTP, SOAP
9. SOAP is less preferred than REST.

Define WSDL,SOAP and REST.

A WSDL is an XML document that describes a web service.

It actually stands for Web Services Description Language.WSDL tells about the functions that you can implement or exposed to the client. For example: add, delete, subtract and so on
SOAP is an XML-based protocol that lets you exchange info over a particular protocol (can be HTTP or SMTP, for example) between applications. It stands for Simple Object Access Protocol and uses XML for its messaging format to relay the information.
REST is an architectural style of networked systems and stands for Representational State Transfer.
It’s not a standard itself, but does use standards such as HTTP, URL, XML, etc

It is special chacter(s) which have special meaning in Regular Expression.

For Example:
*, ., /, \, ? and ^.

Sr Meta character Desctiption
1 [ ] Match any character within [phc]
Means find “p” OR “h” OR “c”
2 Range
a-z means a to z(a,b,c, … z)

0-0 means 0 to 9 (0,1,2,3,4,5,6,7,8,9)

A-Z means A to Z(A,B,C,D ….. Z)

3 ^ Caret It means start with a character

For example: ^ab (start with “a”)

Inside the bracket if have opposite meaning.

For example: [^a](must not start with “a”)

4 $ End with character

For Example

Abc$ means end with “c”

5 . The . (period) means any character(s) in this position,
For example, ph. will find php, php-tutorial and php-tutorial-php but not aphp because it has no following character
6 ? Matches the preceding character 0 or 1 times only.

For example:

colou?r will find both color (0 times) and colour (1 time).

7 * Matches the preceding character 0 or more times.
For example:

tre* will find tree (2 times) and tread (1 time) and trough (0 times).

8 + Matches the previous character 1 or more times.
For example:

tre+ will find tree (2 times) and tread (1 time) but NOT trough (0 times).

9 {n} Preceding character, or character range, n times exactly.
For example:

find a local phone number we could use [0-9]{3}-[0-9]{4} which would find any number of the form 723-4567 OR 132-3234 OR 214-3433.

10 () To group a character.

For Example:
(php), will find the “php” only.

11 | Vertical bar used for OR

(a|c) find either “a” OR “c”

12 \d any character in the range 0 – 9
13 \D Any character not in between 0-9
14 \s Whitespace or tab
15 \S Not whitespace or tab
16 \w Alphanumeric characters (a-z, 0-9, A-Z)
17 \W Not alphanumeric character (a-z, 0-9, A-Z)

15 Tips to Optimize Your PHP Script for Better Performance for Developers

If you are a developer, it is essential for you to optimize your script early in the development process itself. Following the best practices while coding your PHP script is a good starting point to write a well optimized PHP code.

This tutorial provides few tips to optimize PHP code from a developer point of view.

1. Use Native PHP Functions

As much as possible, try to use native PHP functions rather than writing your own functions to achieve the objective. For example, you can use range( b, k) to get an array of alphabets starting from b to k in sequence, if it is only needed once in the script rather than declaring an array with these values in a function and returning it on its call.

2. Use Single Quotes

Using single quotes ( ‘ ‘ ) is faster than using double quotes( ” ” ) if you are going to keep only the string inside it avoiding any variables. Double quotes checks for the presence of variable and adds little bit of overhead.

3. Use = = =

Use “= = =” instead of “= =”, as the former strictly checks for a closed range which makes it faster.

4. Use Appropriate Str Functions

str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4.

5. Calculate Only Once

Calculate and assign the value to the variable if that value is getting used numerous time rather than calculating it again and again where it is being used.

For example, the following will degrade the performance.

for( $i=0; i< count($arrA); $i++){
  echo count($arrA);

The script below will perform much better.

$len = count($arrA);
for( $i=0; i< $len; $i++){
  echo $len;

6. Pass Reference to Function

Pass reference to the function if it does not affect your logic. A function manipulating the reference is faster than those manipulating the value been passed as here one more copy of the value is getting created. Especially it adds overhead when the value passed by you is a big array.

For example, let us create a function in two different way to increment by 1, each element of an array having values 0 to 99.

  // passing by reference
  function  computeValue( &$param ){
  	// Something goes here
  	foreach( $param as $k => $value){
  	  $param[$k] = $value + 1;
  $x = array();
  for( $i =0; $i<99; $i++){
    $x[$i] = $i;
  computeValue( $x);
  // array with 100 elements each incremented by 1
  print_r( $x );


The function above works faster than the function below although both will produce the same result ( increment each element of the array by 1. )

  	// passing by value
    function  computeValue( $param ){
      // Something goes here
      foreach( $param as $k => $value){
      	$param[$k] = $value + 1;
      return $param;
    $x = array();
    for( $i =0; $i<99; $i++){
      $x[$i] = $i;
	// array with 100 elements each incremented by 1
    print_r(computeValue( $x));

7. Create Classes Only When its Required

Don’t create classes and method until and unless its really needed, used and reused as well.

8. Disable Debugging Messages

File operations are expensive. So, if you have written lot of custom functions to log errors and warning during your development process, make sure you remove them before you push the code to production.

9. Use Caching Techniques

Use cache to reduce the load of database operations as well as the script compilation. We can use memcache for the reducing database load and APC for opcode caching and intermediate code optimization.

10. Close the Connection

Get into the habit to unset the variables and close database connection in your PHP code. It saves memory.

11. Reduce Number of Hits to DB

Try to reduce the number of hits to the database. Make queries aggregate so that you call the database less number of times. For example:

  if (mysqli_connect_errno())
    echo "Failed to connect to MySQL" ;

  function insertValue( $val ){
    mysqli_query($con,"INSERT INTO tableX (someInteger) VALUES ( $val )");
  for( $i =0; $i<99; $i++){
    //  Calling function to execute query one by one 
    insertValue( $i );
  // Closing the connection as best practice		


The script above is much slower than the script below:

  if (mysqli_connect_errno())
  	echo "Failed to connect to MySQL" ;
  function insertValues( $val ){
     // Creating query for inserting complete array in single execution.
    $query= " INSERT INTO tableX(someInteger) VALUES .implode(',', $val)";      
    mysqli_query($con, $query);
  $data = array();
  for( $i =0; $i<99; $i++){
    // Creating an array of data to be inserted.
    $data[ ]  =   '(" ' . $i. '")' ;
  // Inserting the data in a single call
  insertValues( $data );
  // Closing the connection as a best practice


12. Frequently Used Switch Cases

Keep most frequently used switch cases on the top.

13. Use Methods in Derived Classes

Methods in derived classes are faster than base classes. For example, let there be a function in both base class and derived class for performing task1. It is named as “forTask1” in base class and “forTask1again” in derived class, so that they will not override.

Call to the function “forTask1again( )” which is in derived class will work faster than call to the function “forTask1( )” as it is from base class.

  class someBaseClass
  	public function forTask1($string)
  		// perform task 1
  	public function forTask2( )
  		// perform task 2
  class derivedClass extends someBaseClass
  	public function forTask1again($string)
  		//perform task 1 same as the function in base class.
  	public function forTask3($string)
  		//perform task 3
  //Instantiating the derived class below.
  $objDerivedClass = new derivedClass( ); 
  // The call below works slow for task1 as it is from base class.
  $resultTask1 = $objDerivedClass->forTask1( );
  // The call below works faster for task1 as 
  // it is from derived class.
  $sameResultTask1 = $objDerivedClass->forTask1again();

14. Use JSON

Use JSON instead of XML while working with web services as there are native php function like json_encode( ) and json_decode( ) which are very fast. If you are bound to have XML form of data, then use regular expression to parse it instead of DOM manipulation.

15. Use isset

Use isset( ) where ever possible instead of using count( ), strlen( ), sizeof( ) to check whether the value returned is greater than 0.

For example, let us assume that you have a function which returns an array with values or a NULL array. Now you want to check whether the returned array is with values or not, then use the following:

  // do something here

In this case, use the above code block, instead of the following:

if(count($returnValue) > 0){
  // do something here

Install Cakephp 3 on Ubuntu

Stable version of cake3 is released for use. Old way of downloading cake and placing it in root directory and making changes to it, to get the app working won’t work anymore. We have to install cakephp using composer. I tried installing it on my machine and felt like sharing the steps that I followed to install. So, here it goes

Following are the requirements for installing cakephp3 :
1. HTTP Server like Apache
2. PHP version greater than or equal to 5.4.16
3. mbstring extension
4. intl extension
5. Composer, without which you cannot install cakephp3

Installing Requirements 

Go to Terminal,

Install apache and php >= 5.4.16.

Install mbstring extension using the following command :
sudo apt-get install libapache2-mod-php5

Install intl extension using the following command :
sudo apt-get install php5-intl

Now restart apache using the command :
service apache2 restart

Install Composer :
Once all Apache,PHP, mbstring and intl extension are installed. Next step is to install composer.
Go to your root directory( /var/www/ in ubuntu ) cd /var/www
If you have curl installed you can use command curl s | php
else you can use command php -r “readfile(‘;);” | php
to install composer.
Note, commands above will install composer only in the directory where you ran the command.

Now we are ready to install cakephp3
Go to document root directory( /var/www/ in ubuntu ) cd /var/www
Now type the command below :
php composer.phar create-project –prefer-dist cakephp/app [app_name]
Your cakephp3 application will now be running.

Connecting to database :
In cakephp3 we give database connection parameters in app.php in folder <app-name>/config
Go to  <app-name>/config/app.php and change the requires parameters mentioned below
‘Datasources’ => [
         ‘default’ => [

             ‘username’ => ‘<give your db username here>’,
              ‘password’ => ‘<give your db passwoprd here>’,
              ‘database’ => ‘<give your db name here>’,

Type http://localhost/app_name in browser to see your cakephp3 app.

Issues that you might face when you type command
php composer.phar create-project –prefer-dist cakephp/app [app_name]

1. Could not open input file: composer.phar
This means you haven’t installed composer globally, and your composer installation was directory specific. Go to the directory where you have installed the composer and issue the above command.

2. This package requires php >=5.4.16 but your PHP version does not satisfy that requirement.
You will get this error when you are trying to install cakephp3 on php version lesser than 5.4.16.
PHP version of your machine has to be upgraded to version 5.4.16 or greater.
    Note : Restart apache after  the upgrade.

3. cakephp/cakephp 3.0.x-<dev/beta/alpha/RC> requires ext-intl * -> the requested PHP extension intl is missing from your system. 
   This means intl extension for php was not installed. You need to install intl extension as mentioned     above, using the command sudo apt-get install php5-intl .
Note : Restart apache after installing.

Issues that you might face after installing 

1. Database driver Cake\Database\Driver\Mysql cannot be used due to a missing PHP 
    extension or unmet dependency
    The above error will be displayed on browser, if Mysql database driver couldn’t be used by app or
is missing. Type the following command in terminal :
     sudo apt-get install php5-mysql
     Now restart mysql using command service mysql restart then restart Apache using command
service apache2 restart
     Refresh the browser now, the above error would have disappeared.