PHP中的访问控制修饰符
2016-06-03温振宏
温振宏
【摘要】 PHP的面向对象中,针对类的成员属性和成员方法有三种访问控制修饰符,分别为public,protected 和private。三种访问控制修饰符支持的访问范围是不同的。本文详细的介绍了public,protected及private修饰类中成员时是如何访问的。
【关键词】 面向对象 修饰符 public protected private
PHP是一种简单的,面向对象的,免费开源的Web开发语言。PHP语音具有开发周期短,安全稳定,简单易学,良好的跨平台等特性。因此,PHP入选全球五大最受欢迎的编程语言。
封装,继承和多态是面向对象语言的三大特性。PHP的封装特性支持三种访问控制修饰符:public公共的,protected受保护的及private私有的。三种修饰符均是用来修饰PHP类中成员属性和成员方法的。
三种访问控制修饰符的访问权限对照表如下:
一、修饰符public
修饰符public修饰类中成员,访问没有任何限制。即类内部的成员可以访问;类外部的成员可以访问;子类也可以访问。如果成员没有指定访问控制修饰符,将被视为public。
class A{
public $pro1 = “public修饰的成员属性”;
function printInfo(){echo $this->pro1;echo “视为public修饰的成员方法”;}}
$a1 = new A();echo $a1->$pro1; $a1->printInfo();
语句echo $a1->$pro1是通过类A的对象$a1访问类中属性public修饰的属性$pro1。语句$a1->printinfo()是通过类A的对象$a1访问类中方法printInfo()。语句echo $this->pro1是在类A的内部访问public修饰的属性$pro1。
class B extends A{function getA(){echo parent::$pro1; parent::printInfo();}}
$b1 = new B();$b1->getA();
声明子类B继承类A,子类B中getA()方法访问父类A中的public修饰的$pro1成员属性及printInfo()成员方法。
二、 修饰符protected
修饰类protected修饰类中成员,不能被该类的外部成员访问。但该类内部可以访问;该类的子类也可以访问。
class A{
protected $pro2=”protected修饰的成员属性”;
$b2->getPro2();方法setPro2()在类A的内部为protected修饰的属性$pro2赋值。方法getPro2()是在子类B中访问父类A中的protected修饰的属性$pro2。
三、修饰符private
修饰符private修饰类中成员,不允许该类的外部成员访问,也不允许该类的子类访问。只能允许该类内部的成员访问。
方法getPro3()在类A的内部访问private修饰的属性$pro3。
综上所述,PHP中三种访问控制修饰符public,protected及private的访问控制权限由高到低。修饰符private修饰的成员属性或成员方法访问权限是最低的。实际操作中,我们也是将类中的成员属性全部用private修饰符进行修饰,然后通过construct()方法对成员属性赋值,仅提供公共接口与外部联系。
参 考 文 献
[1] 高洛峰,LAMP兄弟连主编, 《细说PHP2》, 电子工业出版社第1版2013.6,.
[2] 孔祥盛主编《PHP编程基础与实例教程》, 人民邮电出版社第1版2011.8.