-
static 修饰的类方法为静态方法,在静态方法中只能调用静态变量,不能调用普通变量
-
在类的内部访问该类的静态方法
self::静态方法名 -
在类的内部访问父类的静态方法
parent::静态方法名 -
在类的外部访问静态方法
类名::静态方法名
在类的内部访问该类的静态方法
<?php
header("Content-type:text/html;charset=utf-8");
class People{
public static function introduceMySelf(){ //定义静态类方法
echo \'本府芳名不便告知,望谅解!<br>\';
}
public static function introduceSomeone($name){ //定义静态类方法
if ($name == \'我\') {
self::introduceMySelf(); //调用静态类方法
}else{
echo \'这就是人见人爱花见花开的\'.$name.\'同学!<br>\';
}
}
}
?>
在类的内部访问父类的静态方法
在类的外部使用静态方法
<?php
header("Content-type:text/html;charset=utf-8");
class People{
public static function introduceMySelf(){ //定义静态类方法
echo \'本府芳名不便告知,望谅解!<br>\';
}
public static function introduceSomeone($name){ //定义静态类方法
echo \'这就是人见人爱花见花开的\'.$name.\'同学!<br>\';
}
People::introduceMySelf(); //调用无参数的静态方法
People::introduceSomeone(\'沫沫\'); //调用带参数的静态方法
}
?>
类的属性
访问类的成员属性
在类的方法中访问类的属性,需要使用this关键字。this是一个特殊变量,只能在类的内部使用,用于获得类的某个属性。
$this->属性名 //注意这里的属性名前没有$
<?php
header("Content-type:text/html;charset=utf-8");
class People{
public $name;
public function introduceSomeone(){ //定义静态类方法
echo \'我就是人见人爱花见花开的\'.$this->name.\'同学!<br>\'; //这里的属性名前不要加$
}
}
$p = new People(); //实例化People类
$p->name = \'沫沫\'; //修改类的属性
$p->introduceSomeone(); //调用类的方法
?>
静态属性
定义静态类的属性
[访问控制修饰符] static 属性名;
访问静态属性
-
在类的内部访问该类的静态属性
self::$静态属性名 -
在类的内部访问父类的静态属性
parent::$静态属性名 -
在类的外部访问类的静态属性(前提时该属性可以访问)不要实例化类就可以直接调用,格式为:
类名::$静态属性名
注意这里的静态属性名前带有 $
<?php
header("Content-type:text/html;charset=utf-8");
class People{
static $number = 1;
}
echo \'$number = \'.People::$number.\'<br>\';
++People::$number;
echo \'$number = \'.People::$number.\'<br>\';
$a = People::$number + People::$number;
echo \'$number + $number = \'.$a.\'<br>\';
?>
常量
定义常量:
const 常量名 = \'值\'; //注意常量名前面没有$
注意:
- 常量名前面没有 $
- 常量在定义时需要赋初始值
- 常量名字母一般全部大写
访问常量
-
在类的内部访问该类的常量:
self::常量名; -
在类的内部访问访问父类的常量名:
parent::常量名; -
在类的尾部访问常量成员时,不需要实例化类,也不需要用操作符
->,而是是哟个作用域符::。语法格式为:类名::常量名;(这里的常量名前面也不加$)