1 类的定义
类的定义都是以关键字class开头,后跟类的名称,若存在父类须要在类名后面跟上
关键字extends 父类名,若存在接口须要用关键字 implements 接口名1,接口名2
class 类名 [extends 父类名] [implements 接口名] {
}
注:[]中的是可选的
类名称和接口名称不能与php中的内定关键字相冲
eg:
class Users {
}
1.1 定义类的成员变量和成员函数
类的成员有三种属性范围
private :仅在类本身有效
protected:类本身和子类有效
public:类本身和子类有效,外界可直接访问
eg:
class Users {
private $userName ; //类成员变量
public function setUserName($userName){ //成员函数
$this->userName = $username ;
}
public function getUserName(){ //成员函数
return $this->userName ;
}
}
通常将类的成员变量声明为private或protected类型,防止外界访问
将成员函数声明为public类型,与外界打交道
建议对于外界要用到的成员变量都通过公有的成员函数来访问
不对外部使用的函数也声明未private或protected类型
1.2 声明类的对象
我们使用关键字new来声明类的对象
new 类名(参数1,参数2,…)
eg:
以1.1中的例子为例:
$user = new Users() ; //用new关键字声明了类Users的一个变量,并赋值给了变量$user
1.3 访问类的非静态成员
非静态成员的访问符为 -> (静态成员的访问,在文档的后面有讲解)
-与>是一个整体,中间不能有空格
类的成员有三种属性:private protected public,只有public的成员和函数才能被外界访问
eg:
以1.1中的例子讲解:
该类中有一个private的成员变量$userName
如果我们要改变变量$userName的值就必须通过public的成员函数setUserName()来设置
如果要返回变量$userName的值就必须通过public的成员函数getUserName()来获取
$user = new Users() ; //用new关键字声明了类Users的一个变量,并赋值给了变量$user
$user->setUserName('fanyh') ; //给变量$userName设置值为fanyh
echo $user->getUserName() ; //输出变量$userName的值
结果:fanyh
1.4 类的构造函数
类的构造函数是在声明类的对象时,对类中的成员来做初始化操作的,其是自动调用的,不需要手动
调用
构造函数的声明方法有两种:
1、构造函数与类名相同:类名(参数1,参数2,…)
2、用函数:__construct(参数1,参数2,…)
对构造函数的理解:
a 类的构造函数是在生成类的对象时,自动调用的
b 如果我们需要在生成类的对象时,同时对成员变量做初始化操作,可以把这些操作放到初始化函数
中
1.5 类的析构函数
类的析构函数通常在程序结束时被自动调用,用来清理和释放资源,不需要手动调用
类的析构函数是在执行完了程序中最后一行代码后在调用析构函数来析构程序中的对象
1.6 类的静态成员
可以用关键字static来声明类的成员变量和成员函数
类的静态成员同过操作符::来访问,中间没有空格
类的静态成员是类所有对象共有的当在其中一个对象中对其做了修改,也会反映到其他对象中
对类静态成员的理解:
A 在类自身中访问静态变量用关键字self加操作符::
B 静态成员变量是所有的对象所共有的,只要其中一个对象为其更新了值,在其他对象中访问时值也做了更改(例子中对变量$userName只做过一次赋值操作,通过变量$user1和$user2中访问得到的值一样)
C 静态成员变量可以在非静态的成员函数中访问
1.7 类的静态成员函数
用static关键字来声明类的静态成员函数
在静态成员函数中不能访问类的非静态成员变量,可以访问类的静态成员变量