PHP5 Tutorial – Definition of a class attribute

September 22nd, 2011 by laeeq | 1 comment

An attribute is know as data members and is used to hold data of a class. The data that it holds are specific to the nature of the class in which it has been defined. For example, a Customer class would hold data related to a customer, an Order class would hold data related a an order.

Defining an attribute is as easy as declaring a variable within the body of the class. At the time of declaring a data member/variable within the body of the class, it is also possible to assign a default value to the attribute or data member.

Attributes can either be public, private or protected – the default being public. These are called Access Specifiers. We will learn more about access specifiers in PHP5 OOPS tutorials chapter ” Access Specifiers “.

Example Code:

class Customer {
private $first_name, $last_name;
private $outstanding_amount = 0;
public function getData($first_name, $last_name) {
$this->first_name = $first_name;
$this->last_name = $last_name;

public function printData() {
echo $this->first_name . ” : ” . $this->last_name;
}
}

$c1 = new Customer();

In the above example $first_name, $last_name and $outstanding_amount are data members or attributes of the class Customer. Of these attributes, $outstanding_amount has a default value of zero assigned to it. This means that when an object of the Customer class has been created, $first_name and $last_name will be blank whereas; $outstanding_amount will be initialized with default value of zero.

Let’s take a problem statement and define a PHP5 Class for it.

Define a class to encapsulate Student. The data required to be captured is Student’s first name, last name, date of birth, address and telephone number.

Solution:

class Student {
public $first_name;
public $last_name;
public $date_of_birth;
public $address;
public $telephone;
}

In the above example $first_name, $last_name, $date_of_birth, $address and $telephone are all data members of class Student. These data members define the data that one Student Object will store. Therefore, you can create two objects of a Student class having different data as follows:

$s1 = new Student();
$s1->first_name = “Steve”;
$s1->last_name = “Broad”;
$s1->date_of_birth = “01/01/1920″;
$s1->address = “USA”;
$s1->telephone = “111111111″;
//creating an object $s2 of Student class and assigning data
$s2 = new Student();
$s2->first_name = “Stuart”;
$s2->last_name = “Broad”;
$s2->date_of_birth = “01/01/1930″;
$s2->address = “USA”;
$s2->telephone = “99999999″;

In the above example, we create two objects of the Student class $s1 and $s2. Both these objects have their own memory space within which they store their respective data. Because each data member is public you can directly access the data members of the Student Class using the arrow operator (reference operator) i.e. $s1->first_name =”Steve”; You will learn more about public, private and protected in the PHP5 tutorials chapter Access Specifiers.

Objects as Attributes

In addition to declaring attributes as intrinsic data types (int, string, etc), you can also declare data members as objects of another class. This is called aggregation in Object Oriented Analysis and Design (OOAD). Lets look at an example below:

class Customer {
private $first_name, $last_name;
private $outstanding_amount = 0; //example of default value
public function getData($first_name, $last_name) {
$this->first_name = $first_name;
$this->last_name = $last_name;
} 

public function printData() {
echo $this->first_name . ” : ” . $this->last_name;
}
}

class Order {
private $order_id;
private $customer; 

public setCust(Customer $c) {
$this->customer = $c;
}
}

$c1 = new Customer();
$o1 = new Order();

$o1->setCust($c1); //storing $c1 object in $o1 order object

In the above example setCust() method accepts a Customer type of parameter which is stored internally in the $customer data member.

The advantage of the above method is that it allows you to change the customer object independently of the order object. Imagine having to add new data members to the Customer object. You only have to modify the Customer object without having the need to modify the Order Object.

 

 

You can subscribe to PHPZAG.COM posts by Email

 

Related Topics:

  • Find Time Between Two Dates in PHP
  • Creating Objects in PHP5 Class
  • PHP5 Tutorial – Creating a PHP5 Destructor
  • PHP5 Tutorial- Definition of Constructor
  • PHP5 Tutorial – __clone() method
  • PHP5 Tutorial – magic method
  • PHP5 Tutorial – Magic Methods – __autoload() method
  • PHP5 Tutorial – magic method __call()
  • PHP5 Tutorial – Magic Methods – __isset() and __unset()
  • PHP5 Tutorial – get()) and __set() magic method
  • PHP5 Tutorial – __toString() method
  • PHP5 Tutorial – Polymorphism
  • PHP5 Tutorial – abstract class and interface
  • PHP5 Tutorial- Inheritance
  • PHP5 Tutorial – exception handling
  • PHP5 Tutorial – Final Class and Final Method
  • PHP5 Tutorial – Static Data Members and Methods
  • PHP5 Tutorial – Defining Class Constants
  • PHP5 Tutorial – instanceOf Operator
  • PHP5 Tutorial – $this variable
  •  

     

    1. betfred free bet
      December 10th, 2012 at 08:14 | #1

      Awesome blog, I’m going to spend far more time researching this subject

    1. No trackbacks yet.