PHP中Private修饰符与Constructor

2016-07-09 09:11温振宏
数字技术与应用 2016年6期

温振宏

摘要:在PHP程序设计语言中,public,protected,private是面向对象的三种访问控制修饰符。其中,修饰符private修饰的类中成员属性或方法的访问限制最严格,只能在该类的内部访问。本文详细地分析了private修饰符及构造器constructor的应用。

关键词:PHP private constructor

中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2016)06-0181-01

Abstract:In PHP programming language, public, protected and private are three kinds of access control modifiers of object-oriented programming. The properties of a class modified by private can visit only inner of the class. Modifiers private and constructor are introduced in detail.

Key Words:PHP private constructor

1 Private 和Constructor介绍

PHP是一种HTML内嵌式的,用于服务器端的脚本语言。PHP因开发周期短,稳定安全,简单易学,免费开源,良好的跨平台等特性,成为全球最受欢迎的Web开发语言。PHP是一种面向对象的程序设计语言,面向对象的三大特性分别是封装、继承和多态[1]。

封装,即把客观事物封装成类,类中的成员属性或方法只让可信的类或对象操作,对不可信的类进行信息隐蔽。对类中的成员属性或方法能否具有访问权限是通过访问控制修饰符来完成的。PHP的访问控制修饰符有三种,分别是public,protected和private。修饰符public修饰的类中成员的作用范围可以是类的内部、外部及子类。修饰符protected修饰的类中成员的作用范围可以是类的内部及子类。修饰符private修饰的类中成员的作用范围只能是类的内部。因此,private修饰的类中成员访问限制最严格[2]。实际操作中,为了安全起见,我们习惯上会将类中的成员属性全部用private进行修饰,对类外面的成员实现完全的信息隐蔽。而对类中private修饰的成员属性的操作是通过构造器来实现的。构造器(也称构造方法),在PHP中构造方法主要作用是类的初始化,即为类中的成员属性赋值。它是在类的实例化(即创建对象)时自动调用的一种特殊的方法。

2 Private和Constructor举例

声明Person类,类中包含$name,$sex,$age属性,全部用修饰符private修饰,做到对Person类外部成员完全进行信息隐蔽。对$name,$sex,$age属性的操作通过构造方法construct()来实现。类中还包含输出信息的printInfo()方法。

class Person{

private $name;

private $sex;

private $age;

function __construct($name,$sex,$age){

$this->name = $name;

$this->sex = $sex;

$this->age = $age;

}

function printInfo(){

echo $this->name;

echo $this->sex;

echo $this->age;

}

}

在Person类的外面,只需实例化对象传递具体的参数就可以为类中private修饰的成员属性赋值。通过对象调用printInfo()方法就可以输出信息。代码如下:

$p1 = new Person(“person1”, “男性”, 25);

$p1->printInfo();

3 Constructor在子类中的使用

针对Person类,声明子类Student,并让子类Student继承Person类。在子类Student中声明自己的private成员属性$school,并用构造方法进行子类的实例化。

class Student extends Person{

Private $school;

function __construct($name,$sex,$age,$school){

parent::__construct($name,$sex,$age);

$this->school = $school;

}

function printInfo(){

parent::printInfo();

echo $this->school;

}

}

子类Student无法访问父类Person中的private修饰的属性$name,$sex,$age。但可以在子类的构造方法中用parent::关键字访问父类Person中的构造方法实现子类成员属性$name,$sex,$age的初始化。同理,子类Student中的printInfo()方法也是通过parent::关键字实现访问父类Person中的printInfo()方法,进而输出子类的全部信息。代码如下:

$student1 = new Student(“student1”,”男性”,20,”shool1”);

$student1->printInfo();

以上分析表明,private修饰符主要用于类的封装,让类中private修饰的成员对类外部成员完全进行信息隐蔽。而对类中private修饰的成员属性可以通过构造方法进行赋值操作。如果子类中的构造方法或普通方法对父类的构造方法或普通方法进行了重写,可以通过parent关键字访问父类的构造方法或普通方法。

参考文献

[1]高洛峰.LAMP兄弟连.细说PHP2[M].电子工业出版社,2012.10.

[2]何俊斌,王彩.从零开始学PHP第2版[M].电子工业出版社,2014.10.