您的位置:首页 > 编程语言 > PHP开发

PHP学习笔记----PHP接口技术

2013-12-24 17:23 405 查看
      接口

①接口关键字是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失效
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: