Home > PHP, PHP Class Examples, PHP Tutorials, PHP5 OOPS Tutorials > PHP 5 Tutorials – Static Data Members and Methods

PHP 5 Tutorials – Static Data Members and Methods

February 12th, 2008 admin Leave a comment Go to comments

In this tutorial 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 PHP5

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 keep in mind 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.

Subscribe to my newsletter:

Related Posts on PHP5 Tutorial – Object Oriented Programming (OOPS)

  1. PHP5 Tutorial – Learn to create a PHP5 Class
  2. PHP5 Tutorial – Learn to Create a PHP5 Class Object
  3. PHP5 Tutorial – Defining Attributes of a PHP5 Class
  4. PHP5 Tutorial – Defining Methods of a PHP5 Class
  5. PHP5 Tutorial – Creating a PHP5 Constructor __construct()
  6. PHP5 Tutorial OOPS – Creating a PHP5 Destructor __destruct()
  7. PHP5 Tutorial OOPS – PHP5 Class Access Specifiers – public, private and protected
  8. PHP5 Tutorial – $this variable explained
  9. PHP5 Tutorial – instanceOf Operator Explained
  10. PHP5 Tutorial – Defining Class Constants
  11. PHP5 Tutorial – Inheritance
  12. PHP5 Tutorials – Abstract Class and Interface
  13. PHP5 OOPS Tutorials – Polymorphism
  14. PHP5 Tutorial – Magic Methods – __toString() method
  15. PHP5 Tutorial – Magic Methods – __get() and __set()
  16. PHP5 Tutorial – Magic Methods – __isset() and __unset()
  17. PHP5 Tutorial – Magic Methods – __call() method
  18. PHP5 Tutorial – Magic Methods – __autoload() method
  19. PHP5 Tutorial – Magic Methods – __sleep() and __wakeup()
  20. PHP5 Tutorial – Magic Methods – __clone() method

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/sunilb/www.sunilb.com/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php:245) in /home/sunilb/www.sunilb.com/wp-content/plugins/mycaptcha/MyCaptcha.php on line 41

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/sunilb/www.sunilb.com/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php:245) in /home/sunilb/www.sunilb.com/wp-content/plugins/mycaptcha/MyCaptcha.php on line 41
  1. nithin
    December 31st, 2009 at 07:25 | #1

    Thanks….

  2. nisha
    August 22nd, 2010 at 17:07 | #2

    hi,i m new in php,can u send me a small program to insert values in database using class concept

  1. February 12th, 2008 at 16:02 | #1
Enter this code to leave comment (Sorry, but bots get me crazy :) )