Probably the easiest example to show for HAS-A relationship instead of the inheritance "IS-A" is if we just change a few of the variable names in the original example.

<?php

Class Person {

   var $name = 'Justin';

   var $pet;



   function  __construct() {

       $this->pet = new Dog($this);

   }

   function PlayWithPet()
   {
        echo "Lets play ".$this->pet->name."\n\r";
   }
}



Class Dog {

   var $name = 'Fido';
   var $owner;

   function __construct($owner) {

       $this->owner = $owner;

   }

   function LickOwner()
   {
        echo "*".$this->name." licks ".$this->owner->name."'s face!*";
   }

}



$person = new Person();

$pet = $person->pet;

echo $person->name." has a pet named ".$pet->name."\n\r";
$person->PlayWithPet();
$pet->LickOwner();

/* OUTPUT:

Justin has a pet named Fido

Lets play Fido

*Fido licks Justin's face!*


*/

?>

A dog isn't a person, and a person isn't a dog. Yet their owner/pet 
relationship is important and its good to have a reference between the two.

Justin Carmony



Richard K Miller wrote:
Here's an article on it, from one of the Gang of Four:

http://www.artima.com/lejava/articles/designprinciples4.html

Richard







On Jun 23, 2009, at 12:13 PM, Kirk Cerny wrote:

I would still not write it this way, but good point Alvaro.

Kirk Cerny



_______________________________________________

UPHPU mailing list
[email protected]
http://uphpu.org/mailman/listinfo/uphpu
IRC: #uphpu on irc.freenode.net



_______________________________________________

UPHPU mailing list
[email protected]
http://uphpu.org/mailman/listinfo/uphpu
IRC: #uphpu on irc.freenode.net

Reply via email to