我在php.net上找到了一个代码
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
哪个适合工作
但如果我使用if:
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
print_r($obj);
它为我提供了班级变量的所有信息。
那么,如果我将其用作包含数据库信息的API代码和类变量,那么如何保护我的类变量信息。
答案 0 :(得分:2)
“print_r(),var_dump()和var_export()也将显示PHP 5对象的受保护和私有属性。”
print_r应该用于调试目的。您不应该使用它来使用API公开数据。
答案 1 :(得分:0)
您对answer
的问题有明确的解释。
如果您仍然不想隐藏它,请将变量设为static
<?php
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
static $statvar='This is a secret !'; //<---- A static variable (wont be shown)
}
$obj = new MyClass();
print_r($obj);
<强> OUTPUT :
强>
MyClass Object
(
[public] => Public
[protected:protected] => Protected
[private:MyClass:private] => Private
)
正如您所见,$statvar
无处可见。