«^»
6. Object oriented programming

PHP has some support for object-oriented programming. As shown below, it is possible to declare a class that has variables, constructors and functions.

Here is a file (called person.php) that declares a class called Person:

0510: <?php
0511:    class Person {
0512:       var $iName, $iAge;
0513:       function Person($pName, $pAge) {
0514:          $this->iName = $pName;
0515:          $this->iAge = $pAge;
0516:       }
0517:       function getName() {
0518:          return $this->iName;
0519:       }
0520:       function setName($pName) {
0521:          $this->iName = $pName;
0522:       }
0523:       function getAge() {
0524:          return $this->iAge;
0525:       }
0526:       function setAge($pAge) {
0527:          $this->iAge = $pAge;
0528:       }
0529:       function hasSameAge($pPerson) {
0530:          return $this->iAge==$pPerson->getAge();
0531:       }
0532:       function display() {
0533:          echo "<P>$this->iName's age is $this->iAge</P>\n";
0534:       }
0535:    }
0536: %>

And here is a file (called persontest.php) that declares and uses objects that are of this class:

0537: <?php
0538:    require("person.php");
0539:    // tom and dick
0540:    $tFirstPerson = new Person("tom", 25);
0541:    $tFirstPerson->display();
0542:    $tSecondPerson = new Person("dick", 24); 
0543:    $tSecondPerson->display();
0544:    $tSameAge = $tFirstPerson->hasSameAge($tSecondPerson);
0545:    if ($tSameAge)
0546:       echo "<P>they have the same age</P>\n";
0547:    else
0548:       echo "<P>they have different ages</P>\n";
0549:    // fred and barney
0550:    $tFirstPerson = new Person("fred", 55);
0551:    $tFirstPerson->display();
0552:    $tSecondPerson = new Person("barney", 55); 
0553:    $tSecondPerson->display();
0554:    $tSameAge = $tFirstPerson->hasSameAge($tSecondPerson);
0555:    if ($tSameAge)
0556:       echo "<P>they have the same age</P>\n";
0557:    else
0558:       echo "<P>they have different ages</P>\n";
0559: %>

Go to the script at: http://www.dur.ac.uk/barry.cornelius/papers/phpintro/code/persontest.php

Other possibilities include:

In a paper entitled 'The Object Oriented Evolution of PHP', Zeev Suraski explains some of the limitations of PHP 4 and outlines what is likely to be provided in PHP 5.

Some of the limitations of PHP 4 are:

Many of the above limitations are being removed in PHP 5. Beta 2 of PHP 5.0.0 has been released. Probably, the most up-to-date statement about the OO features of PHP 5 can be found at: http://www.php.net/zend-engine-2.php. Here is a summary of some of the new features in PHP 5:

Suraski's paper is at: http://www.zend.com/images/press/Feb_2003-4_Zeev_PHP5.pdf. Another useful paper is at: http://www.zend.com/engine2/ZendEngine-2.0.pdf