Static Data Members and Methods


In this Artical you will learn all about static data members and methods
  • Meaning of static data members
  • Meaning of static methods
  • Defining static data members in PHP5
  • Defining static methods in PHP5
  • Accessing static data members in PHP5
  • Accessing static methods in PHP5
  • Rules to keep in mind for static methods

Meaning of static data members

A data member that is commonly available to all objects of a class is called a static member. Unlike regular data members, static members share the memory space between all objects of the same class.

Meaning of static methods

A static method is a class method that can be called without creating an instance of a class. Such methods are useful when creating utility classes.

Defining static data members in PHP5

To define a static member in PHP5 you need to prefix the class member name with the keyword ‘static’. Look at the example below.
 
class Customer {
 
 private $first_name; // regular member
 static public $instance_count; //static data member
 
}
In the above example $instance_count is declared as a static data member

Defining static methods in PHP5

To define a static data methods in PHP5 you need to prefix the class method name with the keyword ‘static’. Look at the example below.
 
class Customer {
 
 public function getFirstName() {
  //body of method
 }
 
 static public function getInstanceCount() {
  //body of method
 }
}
In the above example getInstanceCount is declared as a static method

Accessing static data members in PHP5

A static member data can be accessed using the name of the class along with the scope resolution operator (::) i.e. you donĂ¢€™t need to create an instance of that class
Look at the example below:
 
class Customer {
 
 static public $instance_count = 0; //static data member
 
 public function __construct() {
  Customer::$instance_count++;
 }
 
 public function __destruct() {
  Customer::$instance_count--;
 }
 
 public function getFirstName() {
  //body of method
 }
 
 static public function getInstanceCount() {
  //body of method
 }
}
 
$c1 = new Customer();
$c2 = new Customer();
 
echo Customer::$instance_count;
Output:
2
In the above example, $instance_count is a static data member. Every time a new object is created the constructor is executed and the $instance_count variable is incremented by one. To echo the value contained in $instance_count variable, we use the :: (scope resolution) operator.

Accessing static method in PHP

A static method can be accessed using the name of the class along with the scope resolution operator (::) i.e. you donĂ¢€™t need to create an instance of that class. However, you can also access it with an instance variable.
Look at the example below:
 
class Customer {
 
 static public $instance_count = 0; //static data member
 
 public function __construct() {
  Customer::$instance_count++;
 }
 
 public function __destruct() {
  Customer::$instance_count--;
 }
 
 public function getFirstName() {
  //body of method
 }
 
 static public function getInstanceCount() {
  return Customer::$instance_count;
 }
}
 
$c1 = new Customer();
$c2 = new Customer();
 
echo Customer::getInstanceCount(); //this is using the scope resolution operator
echo $c1->getInstanceCount(); //this is using the instance variable
Output:
2
2

Rules to Remember for static methods

  • A static method can only access static data members
  • A static method does not have access to the $this variable
Please feel free to write back for any clarification.

No comments: