类中成员
一个类的内部可以有3种代码:
属性
方法
类常量
它们统称为“类中成员”。
一般属性
属性就是放在一个类中的变量。
定义形式:
形式1: var $v1 ; //定义不赋值
形式2: var $v2 = 2; //定义的同时可以赋值,该值只能是“直接值”,常量(值)
//不能是变量值,也不能是“计算表达式”
形式3: public $v1;
形式4: public $2 = 2; //其实var是“public”一个别名,正式用public更好。
错误形式:
$v1 = 1;
var $v2 = 1+3; //右边不能是计算表达式
public $v3 = $v2; //右边不能是变量
使用形式:
$对象->属性名; //注意:属性名前面没有$符号。
说明:
通常,可以出现变量(数据)的位置,就可以出现对象的属性。
课堂课间练习:
写一个人类对象,具有3个属性,并能够完成求直角三角形的斜边的工作。
一般方法
方法定义跟原来函数定义几乎一样。
使用是通过类或类的对象来进行的。
方法前可以加修饰词:
public,
protected,
private,省略就算“public”
方法中$this关键字
$this是一个“伪对象”,代表当前所属类的当前对象。
举例:
一些简单说法:
类是定义好的某些对象的“模板/模型”
对象是根据该模板/模型所“创建”出来的具体物体
一个对象可以有哪些属性(数据),是由该类来决定的。
一个对象可以做那些事情(方法),也是由该类来决定。
通常认为,一个类(对象),就是拥有一些数据,并通过它自己的方法可以去处理这些数据的“独立体”
一个系统函数:get_class(对象)
作用:获得某个对象的“所属类名”——结果只是一个类名字符串。
$class_name = get_class($p1); //结果可能是:”Person”
静态属性
在定义属性的时候,前面加上关键字:static,此时就是静态属性。
静态属性有什么用?
对比来说:一般属性,他的值是隶属于该类的具体某个对象(虽然定义在类中),或者说,每个对象的同样的属性的值,有可能不一样。
静态属性就是:只隶属于类本身——也可以看做是所有对象的“共有数据”。
静态属性的使用:
通过特殊的语法:::(双冒号语法,也叫范围解释符)
类::$静态属性名;
对比普通属性的使用:
对象->普通属性名; //普通属性也可以叫做“实例属性”,相应的,对象也叫“实例”
实际上,通过对象也可以使用静态属性(但属于最新的语法,也不推荐):
静态方法
如果在一个方法的前面加上static关键字修饰,则就变成了静态方法。
静态方法同样隶属于类,而不是隶属于具体对象。使用方法跟静态属性类似:
类名::静态方法名();
从理念上,可以认为,静态方法是只隶属于类,而为所有对象所“共有”。
如果通过类名来调用静态方法,则该方法中不可以出现$this关键字。
注意1:$this在静态方法中不能使用。
静态方法中不应调用非静态方法。
self:
含义:代表当前类
使用:通常只能在某个类的某个方法内部代表该类的名称。