* * Full license available in separate LICENSE file */ class TestObject { public function identity($x) { return $x; } private function priv() { return 'foo'; } public function test() { return ref([$this, 'priv']); } } class RandomTest extends \PHPUnit\Framework\TestCase { public function testApplicationOfArrayNotation() { $object = new TestObject(); $this->assertSame(10, apply([$object, 'identity'], 10)); } public function testReferencingPrivateFunctionsFromInsideOfObject() { $object = new TestObject(); $reference = $object->test(); $this->assertSame('foo', $reference()); } /** * @expectedException \Kadet\Functional\Exception\NoAccessException */ public function testReferencingPrivateFunctionsFromOutsideOfObject() { $object = new TestObject(); ref([$object, 'priv']); } }