常用格式
1.定义类
class name{}
2.创建对象(实例化)
$obj = new name();
3.访问对象中的成员
$obj->attr;
4.const常量
可以在类中定义常量,即不会在类中改变的值.对于从该类实例化的任何对象来说,常量值在这些对象的整个生命周期中都保持不变
echo self::PI;//类内部访问
echo 类名::PI //类外部访问
5.static静态属性与静态方法
使用 static 关键字可以用来标识成员属性,也可以用来标识成员方法,静态成员属于类所有,所以我们在静态方法里,不能使用 $this
来引用静态成员
//定义一个名为Person的类
class Person{
//设置常量attr为"常量"
const attr = "常量";
//设置静态变量$name为"aaa";
static $name = "aaa";
//设置公开变量 $age为"18";
public $age = 18;
//设置该类的show函数
function show(){
//输出常量attr 必须用 self::attr 的方式
echo self :: attr
//输出静态变量$name 也必须用self::$name的方式
echo self :: $name
//输出该类的一个公开变量
echo $this -> age;
}
}
//定义$obj为一个Person类
$obj = new Person();
//执行$obj的show()函数
$obj -> show();
//错误的输出常量方式
//echo $obj->attr;
//正确的输出常量方式
//echo Person::attr;
//输出类的公开变量,直接用->访问
echo $obj->age;
//输出类的静态变量
echo $obj::$name;
//输出类的所有属性
echo Person;
构造函数和析构函数
构造函数
通常用来对成员属性进行初始化赋值
__construct($name,$age);
析构函数
与构造函数对应的就是析构方法,析构方法允许在销毁一个类之前执行一些操作或完成一些功能,比如说关闭文件,释放结果集等.析构函数不能带有任何参数,其名称必须是
__destruct()
//定义类
class Person{
//该类的构造函数
function __construct($name,$age){
$this->name = $name;
$this->age = $age;
}
//该类的show函数
function show(){
echo "姓名:$this->name"."<br>年龄:$this->age";
}
//该类的析构函数,造所有操作完成时触发
function __destruct(){
echo "完成";
}
}
$obj = new Person("abc",18);
$obj->show();
$obj->show();
$obj->show();
$obj->show();
$obj->show();
//最后一个show()执行完之后析构函数会执行
$obj->show();
访问修饰符(作用域描述符)
访问修饰符允许开发人员对类的访问进行限制,这是PHP5的新特性
public
公共修饰符
类的成员将没有访问限制,所有的外部成员都可以访问(读写)这个类成员
private
私有修饰符
被修饰为private
的成员,对于同一个类里地所有成员是可见的,即没有访问限制;但对于该类的外部代码是不允许改变甚至读操作,对于该类的子类,也不能访问
protected
保护修饰符
被修饰为protected
的成员不能被该类的外部代码访问.但是对于该类的直接子类有访问权限,可以进行属性,方法的读写操作.被子类继承的protected成员,在子类外部同样不能被访问
class Person{
public $name = "abc";
private $age = 18;
protected $a = 123;
function show(){
echo $this -> name;
echo $this -> age;
echo $this -> a;
}
}
$obj = new Person();
//public是公开的,外部也可以访问
echo $obj -> name;
//private是私有的,外部不能访问
echo $obj -> age;
//protected受保护的,外部不可访问
echo $obj -> a;
//extends创建person类的子类son
class Son extends Person{
function show2(){
echo $this -> name;
//继承父级私有变量,无法访问
//echo $this -> age;
echo $this -> a;
}
}
$son = new Son();
$son ->show();
封装
封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节
继承
面向对象开发方法建立在继承概念的基础上,这种策略提高了代码的重用性。
在PHP中,类继承通过 extends
关键字实现;
继承自其他类的类称为子类(child class 或 subclass)
子类所继承的类称为父类( parent class) 或 基类 (base class)
多态
对象的多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。