Php 类变量范围和可视性
我在php.net上找到了一段代码Php 类变量范围和可视性,php,class,private,public,protected,Php,Class,Private,Public,Protected,我在php.net上找到了一段代码 class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo $this->protected; ech
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代码和保存数据库信息的类变量,我如何保护它呢
“print_r()、var_dump()和var_export()还将显示PHP 5中对象的受保护和私有属性。”
打印应用于调试目的。您不应该使用它来使用API公开数据。您对此问题有明确的解释 如果仍然不想隐藏它,请将变量设置为
静态
<?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);
如您所见,
$statvar
不见踪影。谢谢您的回复!
MyClass Object
(
[public] => Public
[protected:protected] => Protected
[private:MyClass:private] => Private
)