目录
常量
//===预定义常量(php预先定义好的,值不改变)===//
echo PHP_OS; //当前操作系统
echo PHP_VERSION; //php版本
//===魔术常量(特殊的预定义常量,值随着位置变化而变化)===//
echo __LINE__; //返回魔术常量所在的行 8
echo __FILE__; //返回当前文件路径(绝对路径)
echo __DIR__; //返回当前文件所在的目录,当前文件位置
echo __FUNCTION__; //返回函数名称,区分大小写,不在函数中时返回空字符串
echo __CLASS__; //返回当前所在类名,包含命名空间,区分大小写
echo __METHOD__; //返回当前所在方法名,包含命名空间,区分大小写
echo __NAMESPACE__; //返回当前命名空间,区分大小写
echo __TRAIT__; //返回当前所在Trait名,包含命名空间,区分大小写
魔术方法
- __construct构造方法
- __destruct析构方法
- __clone克隆方法
- __call非静态调用方法
- __callStatic静态调用方法
- __debugInfo打印方法
- __get获取成员属性方法
- __isset方法
- __set方法
- __invoke方法
- __sleep方法
- __toString方法
- __unset方法
- __wakeup方法
final关键字
- final只能用来定义类和方法;
- 使用final关键字标记的类不能被继承;
- 使用final标记的方法不能被子类覆盖;
抽象类(abstruct关键字)
- 抽象类不能被实例化;类中有一个方法为抽象方法,这个类则为抽象类;抽象方法只能进行声明调用参数,不能定义具体的功能实现;
- 抽象类可以有成员属性;不能定义私有抽象方法,违背了设计抽象类的初衷;(设计抽象类来继承)
- 抽象类可以实现接口,且可以不实现其中的方法;
- 抽象类可以继承抽象类,不能重写类中的抽象方法;(对抽象父类的扩展)
接口(interface关键字)
- interface关键字定义;可以指定类中需要实现的所有方法,不需要定义这些方法的内容;
- 定义的方法都必须是public;
- 接口也可以继承多个接口,同样适用extends关键字;
- 接口中不可以声明变量,但可以声明类常量.
- 接口没有构造函数,抽象类中可以有;
接口的实现(implements关键字)
- implements 关键字;非抽象类必须实现接口的所有方法;类可以实现多个接口,用逗号隔开;(实现多个接口时,方法不能重名)
冒泡排序
$arr = [1,2,3,4,5];
for ($i = 0; $i < count($arr); $i++){
for ($j = 0; $j < count($arr) - $i - 1; $j++){
dump("i:".$i.'-j:'.$j);
if ($arr[$j] > $arr[$j + 1]){
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
dump('==============');
}