接口
①接口关键字是interface,一般接口名都是一字母i开头。
②接口的使用规范:
interface 方法名(){
属性;
方法;
}
③接口内的方法不能有方法体
④接口的来历:给出一些没有实现的方法,封装到一起,当某个类需要使用的时候,再根据具体情况把这些方法写出来。具体使用方法:
class 类名 implement 接口{
}
⑤接口体现了编程高内聚低耦合的特点
⑥一个类可以使用多个接口
class 类名 implement 接口1,接口2{
}
⑦接口中可以有属性,但是必须是常量,且为public
⑧接口的方法也是public的
⑨一个接口可以继承多个接口
继承与实现比较 final const
① 如果我希望某个类不被其他类来继承,这可以使用final关键字
② 如果我们希望某个方法不被改写,也可以使用final关键字修饰
错误处理和异常处理①—die
① php处理错误的3种方法:
a. 使用简单的die语句 使用方法---die(“”输出的内容)
例:file_exists(“aaa.txt”) or die(“文件不存在”);
b. 创建自定义错误函数
定义一个函数覆盖原错误调用机制:
Set_error_handler(“自定义的错误处理函数”,错误级别)
c. 错误触发器
错误处理器、错误级别、处理错误方式③错误触发器
三步走:
定义一个函数1显示错误信息
调用一个函数2覆盖系统调用错误机制
再在判断语句内调用一个函数达到调用函数二的作用
Set_error_handler(”自定义的错误处理函数”,错误级别)
例:
函数1àFunction my_error3($errno,$errmes){
Echo “错误信息是:”.$errno;
}
函数2àSet_erro_handler(“my_error3”,E_USER_WARNING);
$age=720;
If($age>120){
函数3àTrigger_error(“输入年龄过大1“);
Exit();
}
Php错误日志
① 使用error_log函数保存错误日志 error_log(发送的内容,类型<默认为3>,“发往的地址“)
② \r\n表示向文件输入一个回车换行
③ 使用date()函数来显示时间,格式是date(“Y-m-d G-i-s”),不过此时显示的时间却是GMT时区的时间,所以引出了默认显示时区的问题
④ date_fault_timezone_set(“PRC”);
php异常处理
①
php进阶预热篇php执行流程时序图
①
Php数据库编程①---使用mysql扩展库
1.php有三种方式操作mysql数据库
① 使用mysql扩展库
② 使用mysqli扩展库
③ 使用pdo
2.mysql数据库存在三层结构
3.mysql扩展库是php操作数据库的函数的集合
php数据库编程②---使用mysql扩展库
① 查看所有表目录:
show databases;
② 选中某个表目录:
use 表目录名;
③ 查看某个表:
show tables;
④ 创建一张用户表供我们使用:
create table user1(
id int primary key auto_increment,
name varchar(32) not null,
password varchar(64) not null,
email varchar(128) not null,
age tinyint not null
);
⑤ 删表指令:
drop table 表名;
⑥ 预先加入表名:
insert into user1(name,password,email,age)values('zhangsan',md5('12345'),'zhangsan@sohu.com',30);)//此处用MD5函数达到密码加密的功能
⑦ 查看某个表里的内容
select * from 表名;
⑧ mysql客户端默认接收UTF-8的码,所以手输的汉字接收不了
解决办法:
用 show variables like ‘%char%’;调出默认设置,再用命令set character_set_client=gbk;
set character_set_results=gbk;
⑨ mysql扩展库操作mysql数据库的步骤
a. 获取连接;
$conn=mysql_connect(“127.0.0.1”,”root”,”9980565787”)
If(!$conn){
Die(“连接失败”,mysql_error());
}
b. 选择数据库
Mysql_select_db(“test”);
c. 设置操作编码(建议有)
d. 发送指令sql(ddl,dml,dql,dtl)
$sql=”select * from user1”;
$res=mysql_query($sql,$conn);
e. 接收返回结果,并处理
Foreach($row as $key =>$val){
Echo “--$val”;
}
Echo “<br/>”;
f. 释放资源,关闭连接
Mysql_free_result($res);
细节:
1. 使用完$res结果集后,一定要及时的释放资源
2. mysql_close()如果没有的话,系统也会自动关闭
3. 从$res获取行数据的时候,处理mysql_fetch_row($res),还有三个办法
分别是
Mysql_fetch_row($res),返回一个索引的数组(推荐使用)
Mysql_fetch_assoc($res),返回一个关联数组
Mysql_fetch_array($res),返回关联数组和索引数组(两套)
Mysal_fetch_object($res),把一行数据当作一个对象返回
php数据库编程③---使用mysql扩展库
①$conn的使用原则是尽量晚创建,尽量早的释放
②修改:update user1 set age=100 where id=6
④ 删除:delete from user1 where id=5
⑤ 从上面的两个文件看出,代码的复用性和可维护性不高,PHP编程中,通常是将对数据库的操作,封装成一个工具类
Cookie/session
①什么是会话
打开浏览器访问某个服务器的多个资源,然后关闭浏览器,这个过程就是会话。
②setcookie(“key名”,“key值”,“time()+保存多少时间(以秒为单位)”)
例:setcookie(“name”,”xiaoming”,”time()+3600”)
③浏览器抓包的时候看到的set-cookie的时间要加上8个小时才是我们中国时区的时间
④$name=$_cookie['name'];//取cookie的某个键值
print_r($_cookie);//取cookie里面所有的值
⑤如果cookie有效时间已过,则cookie就取不到了
⑥cookie可以保存中文,默认会用urlencode函数对其编码
⑦cookie修改和删除时同样利用setcookie函数,但是删除时要注意“time()-任意时间”表示删除的意思
⑧如果想一次删掉所有cookie则
foreach($_cookie as $key=>$val)
Setcookie($key,””,time()-任意时间);
Session的设置和保存
①cookie的安全性和网络带宽的缺点促使了session的产生
②session是服务器端的技术,服务器为每一个用户的浏览器创建一个为其独享的session文件。
③session默认存放路径是c:/windows/temp文件夹中,我改成了D:/wamp/tmp中了。
④session的创建是取决于session_start()这个函数,只要见到这个函数,session就创建起来了
⑤name|s:8:"xiaoming" 这是一段session。各字符
分别表示的含义是name:键名,s:键值数据类型,8:键值数据大小,xiaoming:键值
⑥session函数可以保存diuble,int,bool,array,object类型的数据
Session的获取和增删改查
①session的获取要与你创建session的那个界面关联起来,用require_once
②session的修改和session的增加差不多
③session的删除
<?php
session_start();
//删除某个session
unset($_SESSION['name']);
//删除该浏览器的所有session
session_destroy();
?>
④session默认存放时间是1440S(发呆时间),可以通过php.ini来设置
⑤在php手册里可以查到php.ini的详细配置
⑥在php.ini中启用session.auto_start = 1(不推荐,会影响效率),怎么不需要在每个用到session的界面中调用session_start()函数。
⑦服务器怎么可以使得session和浏览器一一对应呢?————当访问创建session的界面时服务器把所创建的session的id通过头消息返回给浏览器,当下次浏览器和服务器对话时,浏览器又会把session的id返回给服务器。
Session购物车,cookie禁用
①当浏览器禁用了cookie时(意思就是浏览器默认不接收cookie了),我们可以在服务器端把session的ID通过在超链接中加PHPSESSID返回来。下次点超链接时再把PHPSESSID的值返回给服务器识别。
②系统提供了一个SID变量,在这里SID=’PHPSESSID=sessionid’的值’
③还可以在php.in中启用session.use_trans_sid功能
验证码防恶意攻击
Session配置session的gc机制自定义session处理器
①session.gc_maxlifetime=1440 session的醉最大生命周期
Session.gc_probability=1
Session.gc_divisor=1000
上面的三条共同决定了session的垃圾回收机制
说明:当某个用户操作session的时候,会使用到session_start(),该函数会调用gc,但其概率是 session.gc_probability/session.gc_divisor,对于网站越大,概率应该调的越小
②session.cookie_lifetime=0
该设置可以指定cookie默认生命周期,默认是0,表示当关闭浏览器后,该cookie失效