Objects and PHP

The focus of object orientation is the logical grouping of related variables into a generic variable - an object. Before you can create an object, however, you must create a class.

Python vs. PHP: Choosing your next project's language

A class is a template for an object. The following class, Vehicle, is designed to describe attributes of 'any' vehicle.

01	<?
02	class Vehicle
03	{
04       var $doors;
05       var $colour;
06       var $name;
07       var $price;
08
09       function Vehicle($doors,$colour,$name,$price)
10       {
11          $this->doors = $doors;
12          $this->colour = $colour;
13          $this->name = $name;
14          $this->price = $price;
15       }
16
17       function expensive()
18       {
19          if($this->price > 40000)
20             return true;
21          else
22             false;
23       }
24
25       function print_vehstr()
26       {
27          echo "{$this->name}: {$this->colour} {$this->doors} door for \${$this->price}\n";
28       }
29    }
30		    ?>

Notice how the class Vehicle looks like a regular function. Unlike a function, however, it has functions declared inside it.

The second line declares the class, which is called Vehicle. Lines four through seven declare 'properties' of the Vehicle class. Those properties - $doors, $colour, $name and $price - refer to four generic attributes of any vehicle with which our application deals. The remainder of the class definition consists of the declaration of three 'methods': Vehicles(), expensive() and print_vehstr().

The Vehicle() method is called a 'constructor'. We know it is a constructor because it has the same name as the class, Vehicle. Constructors are executed when an object is created out of the class. It sets up the object with any data necessary for use by the script - hence the name, constructor. This constructor sets the class properties declared on lines four through seven. It references these properties via the object $this, which is a reference to the object itself.

The next method, declared on line 17, tells the user whether the vehicle is expensive or not. To do so, it checks whether the $price property is greater than 40000. If so, it returns true - telling the user that the vehicle is expensive; otherwise, it returns false. Again, the method references the class property via the $this object.

The final method, print_vehstr(), prints out a vehicle string containing all properties. The following lines create an object from the Vehicle class.

01  <HTML>
02  <BODY>
03  <?
04  $car = new Vehicle(2,"red","Sport's car",60000.00);
05  if($car->expensive()) {
06      echo "An expensive vehicle\n";
07  } else {
08      echo "Not an expensive vehicle\n";
09  }
10  $car->print_vehstr();
11  ?>
12  </BODY>
13  </HTML>

The fourth line creates an object, $car, from the Vehicle class. The script passes four variables corresponding to the variables in the constructor. (When there is no class constructor, no variables need be passed.)

Line five tests whether the vehicle is expensive and, if so, tells the user. Otherwise, the user is told that the vehicle is not expensive. Finally, on line 10, we print the vehicle string.

You may be wondering why we've gone to all this trouble for such a basic application when the following script would have sufficed.

01  <HTML>
02  <BODY>
03  <?
04  $doors = 2;
05  $colour = "red";
06  $name = "Sport's Car";
07  $price = 60000.00;
08
09  if($price > 40000) {
10      echo "An expensive vehicle\n";
11  } else {
12      echo "Not an expensive vehicle\n";
13  }
14  echo "$name: $colour $doors door for \$$price\n";
15  ?>
16  </BODY>
17  </HTML>

Consider, a situation where there are 10 different vehicles. How would you group the relevant variables? A good project to learn more about objects would be to implement two applications: one using objects, the other standard PHP, but with each storing data on 10 different vehicles. You will quickly see how useful objects can be.

More about: Hewlett-Packard, HP
References show all

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
Users posting comments agree to the Computerworld comments policy.
Login or register to link comments to your user profile, or you may also post a comment without being logged in.
Related Whitepapers
Latest Stories
Community Comments
Whitepapers
All whitepapers
Sign up now to get free exclusive access to reports, research and invitation only events.
Featured Download
/downloads/product/161/softdisc/

SoftDisc

SoftDisc is an image file tool that allows you to create, edit and manage your image files. It also lets you emulate a virtual CD ...

Computerworld newsletter

Join the most dedicated community for IT managers, leaders and professionals in Australia