PHP 知识点小结

PHP知识点小结

抽象类与接口

抽象类

抽象类使用abstract关键字申明,将某个类标记为抽象类,可以推迟实现所声明的方法。将方法定义为抽象方法,只需要省略掉包含所有大括号的方法体, 并以分号结尾即可。

抽象类不能被直接实例化,必须被继承!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//抽象类
abstract class people {

//抽象方法
abstract function age();

//一般方法
protected function name($happy){
return $happy;
}
}

class man extends people{
function age($num){
retrun $num;
}
}

$jack = new man();
$jack->age(10);
$jack->name('jack ma');

接口

接口抽象类很类似,区别在于接口中不能申明任何具有方法体的方法,申明接口使用interface关键字,将接口加到某一个类上,使用implements关键字,非extends。一个类可以继承多个接口,使用,连接

实现多个接口时,接口中的方法不能有重名。接口也可以继承,通过使用 extends 操作符。

PHP不支持多重继承,即从多个基类继承,但是可以继承多个接口

继承接口的类,必须实现接口中所有的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//接口
interface Ipeople{
function age();
function name();
}
interface Icar{
function carName();
function carPrice();
}
//类继承接口(必须实现接口中所有的方法)
class man implements Ipeople, Icar{
protected function age($num){
return $num;
}

protected function name($jack){
return $jack;
}

function carName($car){
return $car;
}

function carPrice(){
return 888888888;
}
}

变量

静态变量与常量

静态变量只存在于函数作用域中,在函数执行完之后,静态变量的值不会丢失。使用static关键字申明静态变量。

表达式不能赋值给静态变量,表达式的值自身会发生变化,静态变量初始化赋值只有在第一次发生

静态成员的变量是类的所有实例之间是共享的.在使用静态变量的时候,必须在作用域限定符后面加上$符号!

类常量必须是一个定值,不能是变量,不可以重新赋值/修改,在定义和使用常量的时候不需要使用$符号!使用const关键字来声明一个常量。

静态方法

静态方法和静态变量相同,都是使用static关键字来标记,区别在于:

静态属性不能通过一个类已实例化的对象来访问,静态方法可以

静态方法中不需要通过对象实例化等即可调用,所有伪变量$this不能再静态方法中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
class Myclass{
const constant = '类常量';
public static $con = '静态变量';

static function myfunc(){
echo self::constant;
}
}

//静态调用类的方法,就是不需要实例化这个类,这样做会更高效。
echo Myclass::$con;
echo Myclass::constant;
echo Myclass::myfunc();