接口
定义接口(让类去实现):
interface iUsb{
public function start();
public function end();
}
实现接口:
class Phone implements iUsb{
public function start(){
echo "手机开机...";
}
public function end(){
echo "手机关机...";
}
}
接口中的方法不可以写出来方法体,跟抽象方法是一样的。
当一个类实现接口的时候,需要实现接口中所有的方法。
这么看起来,接口似乎和抽象类没有什么区别,但是:
- 抽象类中的方法,如果没有定义成抽象方法的,是可以实现出来的。
- 接口中的所有方法都是不可以实现的,全部都是没有方法体的。
接口的基本语法:
interface iUSB{
//属性
//方法
}
接口的概念并不是很难,我感觉难的应该是不知道什么时候使用接口。
假设老师让五个学生去写一个“学生信息管理系统”,那么老师如果定义一个接口,让学生去实现,那么就可以控制学生实现某个方法的命名,参数之类的。
什么情况下可以考虑使用接口:
1.定规范,让其他程序员来实现的时候。
2.当有多个类的时候,类与类之间是平级的关系,这些类都会去实现某个功能,只是实现的方法是不同的是不同的,但是
final关键字
- 被final修饰的类是不允许被继承的
- 在某一个类中,被final修饰的方法是无法被修改的
const关键字
const 常量名 = 初值;
因为常量是不能够被修改的,因此必须立马赋初值。
错误处理、异常处理
引入为何要错误处理:
假设我们要打开一个并不存在的文件,比如:
$fp = fopen("aa.txt","r");
echo "OK";
此时会出现:
如果我们想,如果这个文件不存在的话我们要打开另一个文件,此时有一个判断文件是否存在的函数:
file_exist
比如:
if(!file_exists("aaa.txt")){
echo "不存在....";
}else {
echo "存在";
}
根据上面的讨论,我们一起学习PHP的错误处理方式:
- die()语句
die语句执行的功能也是退出,不过和exit()不同,在die()函数中,可以在退出之前输出一些文字。比如:
<?php
if(!file_exists("aaa.txt")){
die("文件不存在");
}
/*
* 上面和下面的作用是一样的
if(!file_exists("aaa.txt")){
echo "文件不存在";
exit();
}
*/
?>
更简单的写法:↓
<?php
file_exists("aaa.txt") or die("文件不存在");
?>
- 自定义错误和错误触发器
在PHP中,错误有级别之分,可以去w3c中查看。
我们可以写一个 错误函数,并且设置,当错误是warnning级别的时候,不要调用默认的错误函数,而是调用我们自己写的错误函数。假设我们写的错误函数为myError()。set_error_handler("myError",E_WARNING),后面跟的E_WARNING是一个PHP常量,可以去w3c中去找。
错误触发器:
在语法上不是错误的,但是程序员认为是错误的,这时候就可以用自定义错误触发器来完成。
比如:程序员认为,薪水小于200000是错误的,年龄大于50是错误的。
调用系统默认的触发器:
<?php
$salary = 190000;
if($salary<200000){
//调用触发器
trigger_error("年薪过小...");//此时是调用系统默认的方式
exit();
}
?>
使用自定义的触发器:
<?php
function myError($errorid,$errorstr){
echo "<b>出错啦~</b> [$errorid] $errorstr";//此时的errorstr就是“年薪过小”
}
set_error_handler("myError",E_USER_WARNING);
$salary = 190000;
if($salary<200000){
//调用触发器
trigger_error("年薪过小...",E_USER_WARNING);//第二个参数设置程序员认为这是什么级别的错误
//如果没有设置第二个trigger_error的第二个参数,默认是E_USER_NOTICE
exit();
}
?>
- 错误日志
这个我暂时先不学习了。。。。。