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;
}
}
$_links = array();
class link {
// static var
var $a;
var $b;
function link() {
$GLOBALS['_links'][] = &$this;
}
// static method
function getLinkedItem(&$s) {
foreach($GLOBALS['_links'] as $key=>$link) {
if ($GLOBALS['_links'][$key]->isALinkOf($s)) {
return $GLOBALS['_links'][$key];
}
}
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
$tmp = link::getLinkedItem($a);
var_dump($tmp->a);