public function testCanCallPrivateStaticMethod() { $alterEgo = AltrEgo::create(new Fixture\Foo()); $arguments = 'Staic Call !"�$%'; $this->assertEquals($arguments, AltrEgo::callStatic($alterEgo, 'privStatFunc', $arguments)); $arrayArguments = array('Static', 'Call!', '"�$%'); $this->assertEquals($arguments, AltrEgo::callStatic($alterEgo, 'privStatFunc', $arguments)); }
{ return self::privStatFunc($value); } } // First off; create an alter ego $alterEgo = AltrEgo::create(new Foo()); // Right, now lets get a hook on those private bits echo $alterEgo->priv . PHP_EOL; // Woot, works, now lets set it to something else and see what happens $alterEgo->priv = 'new private value'; echo $alterEgo->priv . PHP_EOL; // This value remains on your object, even after retrieving it back with $alterEgo->getObject(), now lets try some method calls echo $alterEgo->privFunc('Private call') . PHP_EOL; // You can pass in an array of parameters if you wish var_dump($alterEgo->privFunc('Private', 'call')); // Now then, onto arrays; You can push values straight into them using standard PHP array syntax. But be aware, the array will be converted (and maintained) as an ArrayObject $alterEgo->privArray[] = 'new value'; var_dump($alterEgo->privArray); // You can add associative array values and unset them as you normally would in PHP $alterEgo->privArray['assoc_key'] = 'private key value entry'; var_dump($alterEgo->privArray); unset($alterEgo->privArray['assoc_key']); var_dump($alterEgo->privArray); // We also have the facility to execute static function that have private/protected visibility. // It's rare you'll ever come across these, they're typically set as public, and when they are its advised you just call them directly echo AltrEgo::callStatic($alterEgo, 'privStatFunc', 'private static call') . PHP_EOL; // Also works with arrays var_dump(AltrEgo::callStatic($alterEgo, 'privStatFunc', array('private', 'static', 'call'))); // doing the same thing with arrays // If at anytime you want to jump back into scope just fetch your object back, you can throw it back into AltrEgo::create() whenever you need $backToScope = $alterEgo->getObject();