Started work on the mammoth. Going w/ idea of implementing an array object with a very specific getter method.
Made progress with initial idea. Overriding offsetGet of ArrayObject for our special case. TODO: see what invoke should return, it could be a function that could (re)set the secret, as the callback has to be called, thus can't be an empty variable.
Added PHPUnit for unit tests and written a small unit test to implement and check my strange behaviours. Also added a quick shell script for comfort. All tests pass, for now -- we've got the callback key!
Written a test for calling the StrangeObject object as a function, thus returning a closure.
Added the closure binding to the test, but still it has no access to private property. Idea: use the setter method again to get the secret INTO the strange object.
Solved the problem. Used Closure::bind and gave both the scope and context of the function to the test. This way, I could access its private parts, as documented here: http://php.net/manual/en/closure.bind.php
All your base are belong to us, indeed.
Final touches added, some documentation written down and some variable names changed to be more pronouncable.