三大特证
- 封装
- 继承
- 多态
1、封装
封装可以最大限度的保护类的内部细节,也就是说尽量不让类的调用着知道类的内部都有哪些属性,哪些方法。使用3p修饰符和gusic魔术方法来实现类的封装。
1.1 gusic魔术方法
- __get(属性名):当在类外部访问非公有成员属性时,自动调用,
并且,参数传入要获取的成员属性的名称,返回获取的属性值。 - __unset(属性名):当在类的外部销毁非公有成员属性时,自动调用,
并且,将正在销毁的成员属性名传递进来。 - __set(属性名,属性值):当在类外部设置非公有成员属性时,自动调用,
并且,将正在添加的成员属性的名字和值同时传进来。 - __isset(属性名) :当在类外部判断非公有成员属性是否存在,自动调用,
并且,将正在判断的属性名传进来。 - __call(方法名和参数列表):当在类外部访问非公有成员方法时,自动调用,
并且,将正在访问的方法名和参数列表传进来。
1.2 可以在类的外部获取或者设置属性,封装的意义就在于在类的外部不知道类有哪些属性。
<?php
class Book{
public $name;
public $age;
public $sex;
}
$p1=new Book();
$p1->name='常乐';
1.3 将类中的属性使用private修饰符修饰后,就无法在类的外部获取或者设置私有属性了。
class Book{
private $name;
private $author;
private $price;
}
$p1=new Book();
$p1->name='cl';
可以通过构造方法为私有属性赋值,如下:
class Book{
private $name;
private $author;
private $price;
/*通过构造方法为私有属性赋值*/
public function __construct($name,$author,$price){
$this->name=$name;
$this->author=$author