In PHP5, Zend engine has been rewritten to accomodate the new object oriented concepts. To start with, I will write on some functions that have been added to PHP5’s bag.

~ The access modifiers public/private/protected are introduced for methods and properties.

~ __construct() is used now instead of the function names in the name of the classes which makes it a uniform way of access

~ __destruct() function is now introduced which will run when an object is destroyed

Let us create a class to verify how the above concepts work.

class myBook{
 private var $bookTitle;
 function __constructor(){
     echo "Book object created in constructor";
  }
  function getBookTitle(){
      return $this->bookTitle;
   }
   function setBookTitle(){
      $this->bookTitle = "Hope Wins";
   }
   function __destruct(){
      echo "Object perishes now!";
   }
}
$myNewBook = new myBook();
// $myNewBook->bookTitle = "Truth about life"; 
// The above statement will return an error notice as the variable bookTitle declare private.
$myNewBook->getBookTitle();
$myNewBook = nothing;
unset($myNewBook);

~ Introduction of Abstract classes
An abstract class is a class that cannot be instantiated. But, you can inherit from an abstract class. If you want to declare a method as an abstract method, then you need to declare the class as an abstract class as well. When a method is declared abstract, then the inherting class will implement the method.

abstract class shape{

var $a, $b;

function calcSqFeet($a=0, $b=0){

if(!empty($a) && !empty($b){ echo "Square feet ".$a * $b); }

}

abstract function color();
}

class rectangle extends shape{
var $a, $b;

function __construct($a, $b){
$this->a = $a;
$this->b = $b;
}

function color(){
echo "Color of the shape is :" . "Red";
}

function getSqFeet($a, $b){
return calcSqFeet($a, $b);
}

}

// Declaration
$myShape->color();
$myShape->getSqFeet(3, 4);