PHP 面向对象基础:封装性 public
什么是封装?
尽量隐藏对象的内部细节,达到访问控制。对外形成一个屏障,只保留有限的对外接口与外部发生联系。控制在程序中属性、方法的读取和修改的方位级别。 PHP 类的封装包括 访问控制(可见性约束) 、 魔术方法 、 静态属性 、 静态方法 与 重载 。
封装的原则
对象对外的部分不能够随意调用、更改对象的内部数据(成员属性和成员方法),从而有效避免了外部错误对对象内部数据的”交叉感染”,使错误能够局部化,大大提升排错的效率。
属性的访问控制
对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。
class MyTest
{
// 公共属性
public $a = 'public';
// 公共方法
public function printPublic()
{
echo "Called public funtion" . "<br />";
}
// 类自身调用公共属性与方法
public function printEverything()
{
echo $this->a . " | ";
$this->printPublic();
}
}
对象可以调用类的公共属性和方法
$test = new MyTest();
echo $test->a . "<br />"; // public
$test->printPublic(); // Called public funtion
$test->printEverything(); // public | Called public funtion
子类可以调用父类的公共属性和方法
class Test extends MyTest
{
public function printPublic()
{
echo $this->a . "<br />";
parent::printPublic();
}
}
$obj = new Test(); // public
$obj->printPublic(); // Called public funtion