私はプログラミングをしていて、この問題に遭遇しました。以下のコードサンプルでは、パブリック関数がプライベート変数を設定しています。これで、そのプライベート変数のコンテンツはプライベートであると予想され、$ GLOBALS変数(スーパーグローバル)がそれにアクセスでき、少なくともそれを読み取ることができると考えられます。なぜ?これを好む方法はありますか?
<?PHP
error_reporting( E_ALL );
class test {
private $test = '';
public function test()
{
$this->test = 'Can u see me?';
}
}
$b = new test();
$b->test();
pre( $GLOBALS['b'] );
// Result:
// test Object
// (
// [test:test:private] => Can u see me?
// )
somefunc();
function somefunc()
{
pre( $GLOBALS['b'] );
// Result:
// test Object
// (
// [test:test:private] => Can u see me?
// )
}
echo $b->test;
// Result:
// Fatal error: Cannot access private property test::$test
function pre( $a ) {
echo '<pre>';
print_r( $a );
echo '</pre>';
}
?>
ありがとう、ジェフリー