在 PHP 中从类外部调用私有方法和私有属性
2022-08-30 14:22:19
我想在非常罕见的特定情况下从类外部访问私有方法和变量。
我已经看到,尽管使用了内省,但这是不可能的。
具体情况是下一个:
我想有这样的东西:
class Console
{
final public static function run() {
while (TRUE != FALSE) {
echo "\n> ";
$command = trim(fgets(STDIN));
switch ($command) {
case 'exit':
case 'q':
case 'quit':
echo "OK+\n";
return;
default:
ob_start();
eval($command);
$out = ob_get_contents();
ob_end_clean();
print("Command: $command");
print("Output:\n$out");
break;
}
}
}
}
此方法应该能够注入到代码中,如下所示:
Class Demo
{
private $a;
final public function myMethod()
{
// some code
Console::run();
// some other code
}
final public function myPublicMethod()
{
return "I can run through eval()";
}
private function myPrivateMethod()
{
return "I cannot run through eval()";
}
}
(这只是一个简化,真正的一个通过一个套接字,并实现一堆更多的东西...)
所以。。。
如果你实例化了类 Demo 并调用了 $demo->myMethod(),你会得到一个控制台:该控制台可以访问编写命令的第一个方法,如下所示:
> $this->myPublicMethod();
但是您无法成功运行第二个:
> $this->myPrivateMethod();
你们中是否有人有任何想法,或者是否有任何PHP库允许您执行此操作?
多谢!