class a{
var $_name="";
function getname() {
return $this->_name;
}
function a($name) {
$this->_name = $name;
}
}
class b{
var $_name="";
function getname() {
return $this->_name;
}
function b($name) {
$this->_name = $name;
}
}
class link {
// static var
static $_links = array();
var $a;
var $b;
function link() {
self::$_links[] = &$this;
}
// static method
function getLinkedItem($s) {
foreach(link::$_links as $link) {
if ($link->isALinkOf($s)) {
return $link;
}
}
return new link();
}
function isALinkOf(&$s) {
return ($this->a === $s || $this->b === $s);
}
function getA() {
return $this->a;
}
function getB() {
return $this->b;
}
}
$a = new a('john');
$b = new b('locke');
$link = new link();
$link->a=$a;
$link->b=$b;
// Get linked item of $a
$foo = link::getLinkedItem($a);
var_dump($foo->getB());