All pastes #269427 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-12-06 16:13 UTC
rendered paste body
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());