/** * Invoke all delegates containing in the chain. * Stops invoking if delegate return a not null result * */ function invoke() { $args = func_get_args(); return lmbDelegate::invokeChain($this->delegates, $args); }
function testInvokeChain() { $s1 = new DelegateTestingStub(); $s2 = new DelegateTestingStub(); $s3 = new DelegateTestingStub(); $d1 = new lmbDelegate($s1, 'instanceMethod'); $d2 = new lmbDelegate($s2, 'instanceReturningMethod'); //returns argument $d3 = new lmbDelegate($s3, 'instanceMethod'); lmbDelegate::invokeChain(array($d1, $d2, $d3), array('bar')); $this->assertTrue($s1->instance_called); $this->assertEqual($s1->instance_arg, 'bar'); $this->assertTrue($s2->instance_called); $this->assertFalse($s3->instance_called); $this->assertNull($s3->instance_arg); }