网站开发简历项目,数字创意设计包括哪些方面,网站title写法,ip切换工具1.JSON方式封装通信接口#xff1a; 封装#xff1a; response.php ?php
// JSON方式封装通信接口
// 定义 response类
class Response {// 定义一个静态方法,作用#xff1a;按json方式产生数据 // 规范通信数据#xff1a;参数一:状态码,参数二:消息提示(初始值为空…1.JSON方式封装通信接口 封装 response.php ?php
// JSON方式封装通信接口
// 定义 response类
class Response {// 定义一个静态方法,作用按json方式产生数据 // 规范通信数据参数一:状态码,参数二:消息提示(初始值为空),参数三:组装后的数据(初始值为空数组)// 注释码:/*** 按json方式输出通信数据* param integer(数字类型) $code 状态码* param string(字符串类型) $message 提示信息* param array(数组类型) $data 数据* return(返回值) string(字符串类型)*/public static function json($code,$message ,$data array()){// 判断$code是否为数字if(!is_numeric($code)){return ;}//将三个参数组装成一个新的数组$result array(code $code,message $message,data $data);// 通过json_encode(),产生json数据echo json_encode($result);// exit 终止程序且不输出exit;}
}?调用test.php ?php
// 加载Response类文件
require_once(./response.php);
// 定义一个数组变量
$arr array(id 1,name zhangsan
);// 调用类文件中的json()方法
Response::json(200,数据返回成功,$arr);
?2.XML方式封装通信接口 2.0.1 PHP生成xml数据 封装 response.php public static function xml(){// header 发送一个http头信息将类型改为text/xml,用于暴露xml节点header(Content-Type:text/xml);// 生成xml数据(通过字符串拼接的方法,首先定义一个变量$xml,存储xml数据)// \n 用于换行$xml ?xml version1.0 encodingUTF-8?\n; // 头信息$xml . root\n; // 根节点$xml . code200/code\n; // 主体1$xml . message数据返回成功/message\n; // 主体2$xml . data\n; // 主体3$xml . id1/id\n;$xml . namezhangsan/name\n;$xml . /data\n;$xml . /root;// 输出拼接后的xml数据echo $xml;}2.0.2 xml方式封装通信数据接口 封装 response.php ?php
// 定义 response类
class Response {// xml方式封装通信接口// 定义一个静态方法,作用按xml方式产生数据 // 规范通信数据参数一:状态码,参数二:消息提示(初始值为空),参数三:组装后的数据(初始值为空数组)// 注释码:/*** 按xml方式输出通信数据* param integer(数字类型) $code 状态码* param string(字符串类型) $message 提示信息* param array(数组类型) $data 数据* return(返回值) string(字符串类型)*/public static function xmlEncode($code,$message,$data array()){// 判断$code是否为数字if(!is_numeric($code)){return ;}//将三个参数组装成一个新的数组$result array(code $code,message $message,data $data);// 生成xml数据// 发送header头信息,用于暴露xml节点header(Content-Type:text/xml);// 定义变量$xml,用于存储拼接后的xml数据$xml ?xml version1.0 encodingUTF-8?\n; // 头信息$xml . root\n; // 根节点// 使用xmlToEncode()方法解析$result$xml . self::xmlToEncode($result);$xml . /root;// 输出拼接后的xml数据echo $xml;}// 将$result拼接成新的xml数据// 参数$data(新的数据)例如$resultpublic static function xmlToEncode($data){// 解析$result// 定义变量$xml存储数据$xml ;// 初始化 $attr,当$key不为数字时,$attr为空$attr ;// foreach循环遍历$data数组foreach ($data as $key $value) {// 判断$key为数字的情况if(is_numeric($key)){// 添加属性$attr id{$key};$key item;}// $key是一个节点,$value是节点的一个数据,使用{}用于识别变量$xml . {$key}{$attr}\n; // 开始标签// $value是数组,使用递归,循环输出(判断是否为数组,如果是,则再次调用xmlToEncode方法)// 在一个类的方法函数的上下文中静态变量和函数被访问使用self:: ,通过is_array()判断$value是否为数组$xml . is_array($value) ? self::xmlToEncode($value):$value; // 节点的数据$xml . /{$key}\n; // 结束标签}// 循环结束后,输出这一块组装好的xml数据return $xml;}
}// 调用Response类的方法
$data array(id 1,name zhangsan
);
Response::xmlEncode(200,success,$data);?3.综合方式封装通讯接口 封装 response.php ?php
// 定义 response类
class Response {// 综合方式封装通信接口// 定义一个静态方法,作用综合方式产生数据 // 规范通信数据参数一:状态码,参数二:消息提示(初始值为空),参数三:组装后的数据(初始值为空数组),参数四:数据类型(初始值为json)// 注释码:/*** 按综合方式输出通信数据* param integer(数字类型) $code 状态码* param string(字符串类型) $message 提示信息* param array(数组类型) $data 数据* param string(字符串类型) $type 数据类型* return(返回值) string(字符串类型)*/// 定义常量,默认数据类型const JSON json;public static function show($code,$message ,$data array(),$type self::JSON){// 判断$code是否为数字if(!is_numeric($code)){return ;}// 判断类型,如果存在,则是通过get方法传来的值,如果不存在,则是默认值json$type isset($_GET[format])?$_GET[format]:self::JSON;//将四个参数组装成一个新的数组数据$result array(code $code,message $message,data $data);// 如果数据类型为jsonif($type json){// 调用json()方法self::json($code,$message,$data);exit;}elseif($type array) {// 如果数据类型为array(调试模式)// 直接输出$resultvar_dump($result);}elseif($type xml) {// 如果数据类型为xml// 调用xmlEncode()方法self::xmlEncode($code,$message,$data);exit;}else{// 其他类型}}// JSON方式封装通信接口// 定义一个静态方法,作用按json方式产生数据 // 规范通信数据参数一:状态码,参数二:消息提示(初始值为空),参数三:组装后的数据(初始值为空数组)// 注释码:/*** 按json方式输出通信数据* param integer(数字类型) $code 状态码* param string(字符串类型) $message 提示信息* param array(数组类型) $data 数据* return(返回值) string(字符串类型)*/public static function json($code,$message ,$data array()){// 判断$code是否为数字if(!is_numeric($code)){return ;}//将三个参数组装成一个新的数组$result array(code $code,message $message,data $data);// 通过json_encode(),产生json数据echo json_encode($result);// exit 终止程序且不输出exit;}// xml方式封装通信接口// 定义一个静态方法,作用按xml方式产生数据 // 规范通信数据参数一:状态码,参数二:消息提示(初始值为空),参数三:组装后的数据(初始值为空数组)// 注释码:/*** 按xml方式输出通信数据* param integer(数字类型) $code 状态码* param string(字符串类型) $message 提示信息* param array(数组类型) $data 数据* return(返回值) string(字符串类型)*/public static function xmlEncode($code,$message,$data array()){// 判断$code是否为数字if(!is_numeric($code)){return ;}//将三个参数组装成一个新的数组$result array(code $code,message $message,data $data);// 生成xml数据// 发送header头信息,用于暴露xml节点header(Content-Type:text/xml);// 定义变量$xml,用于存储拼接后的xml数据$xml ?xml version1.0 encodingUTF-8?\n; // 头信息$xml . root\n; // 根节点// 使用xmlToEncode()方法解析$result$xml . self::xmlToEncode($result);$xml . /root;// 输出拼接后的xml数据echo $xml;}// 将$result拼接成新的xml数据// 参数$data(新的数据)例如$resultpublic static function xmlToEncode($data){// 解析$result// 定义变量$xml存储数据$xml ;// 初始化 $attr,当$key不为数字时,$attr为空$attr ;// foreach循环遍历$data数组foreach ($data as $key $value) {// 判断$key为数字的情况if(is_numeric($key)){// 添加属性$attr id{$key};$key item;}// $key是一个节点,$value是节点的一个数据,使用{}用于识别变量$xml . {$key}{$attr}\n; // 开始标签// $value是数组,使用递归,循环输出(判断是否为数组,如果是,则再次调用xmlToEncode方法)// 在一个类的方法函数的上下文中静态变量和函数被访问使用self:: ,通过is_array()方法判断$value是否为数组$xml . is_array($value) ? self::xmlToEncode($value):$value; // 节点的数据$xml . /{$key}\n; // 结束标签}// 循环结束后,输出这一块组装好的xml数据return $xml;}
}// 调用Response类的方法
$data array(id 1,name zhangsan
);
Response::xmlEncode(200,success,$data);?调用test.php ?php
// 加载Response类文件
require_once(./response.php);
// 定义一个数组变量
$data array(id 1,name zhangsan,type array(4,5,6),test array(1,45,67array(123,tsysa))
);// 调用类文件中的show()方法
Response::show(200,数据返回成功,$data,json);?4.将数据缓存值指定文件中 封装file.php ?php
// 定义类,作用处理静态缓存
class File {// 定义默认路径 $_dirprivate $_dir;// 定义文件后缀const EXT .txt;// 将默认路径放在构造函数里面public function __construct(){// dirname(__FILE__)获取文件当前目录(即当前php文件所在的目录)// 设置默认缓存文件地址$this-_dir dirname(__FILE__)./files/;}// 将获取缓存,生成缓存,删除缓存 封装在一个方法中// 参数一缓存文件的文件名参数二缓存数据(默认值为空),参数三保存缓存的文件路径(默认值为空)public function cacheData($key,$value ,$path ){// 拼装成一个文件$filename $this-_dir.$path.$key.self::EXT;// 判断$values是否存在if($value!){// 将value值写入缓存// 判断$value是否为null,为null则删除缓存if(is_null($value)){// unlink() 删除缓存return unlink($filename);}// 获取文件目录$dir dirname($filename);// 判断目录是否存在,即判断存储缓存的文件是否存在,如果不存在,则创建缓存文件if(!is_dir($dir)){// 创建目录,参数一文件目录名参数二设置权限mkdir($dir,0777);}// 将缓存数据写入文件// 参数一:缓存文件名参数二:缓存数据(只能是字符串的形式,通过json_encode()转换)return file_put_contents($filename,json_encode($value));}// 判断$filename是否存在if(!is_file($filename)){return FALSE;}else{// file_get_contents()获取缓存值// json_decode()将json 转换为数组形式return json_decode(file_get_contents($filename),true); // 传入true返回原值}}
}?调用:test.php ?php
// 加载Response类文件
require_once(./file.php);
// 定义一个数组变量
$data array(id 1,name zhangsan,type array(4,5,6),test array(1,45,67array(123,tsysa))
);// new一个File类
$file new File();
// 调用cacheData()方法
$file-cacheData(index_mk_cache,$data);
// 添加缓存
if($file-cacheData(index_mk_cache,$data)){echo success;
}else{echo error;
}
// 获取缓存
if($file-cacheData(index_mk_cache){var_dump($file-cacheData(index_mk_cache));exit;echo success;
}else{echo error;
}
// 删除缓存
if($file-cacheData(index_mk_cache,null)){echo success;
}else{echo error;
}?. // 开始封装 通用db.php ?php
// 单例模式连接数据库
// 单例模式(限制类只能拥有一个实例)
// 定义一个类
class Db {// 配置数据库private $_dbConfig array(host 127.0.0.1, // 数据库地址user root, // 用户名password , // 密码database video, // 数据库名);// 定义资源标识符(结果集)static private $_connectSource;// 用于一个保存类的实例的静态成员变量 $_instance// 使用静态私有变量保存类的实例static private $_instance;// __construct() 构造函数函数执行时默认执行一般用于初始化// 单例模式规定构造函数必须是非publicprivate function __construct(){}// 拥有一个访问这个实例的公共的静态方法// 定义getInstance()方法,便于在类的内部实例化类static public function getInstance(){// 检查类有没有被实例,如果有则返回变量if(!(self::$_instance instanceof self)){// 实例化类self::$_instance new self();}// 返回一个类的实例return self::$_instance;}// php连接数据库public function connect(){// 判断资源是否存在if(!self::$_connectSource){// 连接数据库
// 是可以屏蔽函数执行过程中遇到问题而产生的一些错误、警告信息这样用户就看不到程序的出错信息。这样除了用户界面会友好一些外更重要的是安全性因为屏蔽了出错文件的路径等信息。self::$_connectSource mysql_connect($this-_dbConfig[host],$this-_dbConfig[user],$this-_dbConfig[password]);// 如果没有返回资源if(!self::$_connectSource){die(数据库连接失败.mysql_error());}// 选择数据库// 参数一数据库名称参数二资源标识符(结果集)mysql_select_db($this-_dbConfig[database],self::$_connectSource);// 设置字符集mysql_query(set names UTF8,self::$_connectSource);}// 返回连接数据库的资源return self::$_connectSource;}}// 调用
// 数据库的连接返回结果集
$connect Db::getInstance()-connect();
var_dump($connect);?方案一读取数据库方式开发接口直接连接数据库获取 实例list.php ?php
// 引入接口类
require_once(./response.php);
// 数据库
require_once(./db.php);
// 接口样例http://app.com/list.php?page1pagesize10
// 定义页码并判断是否存在如果不存在给予默认值
$page isset($_GET[page]) ? $_GET[page] : 1;
$pageSize isset($_GET[pagesize]) ? $_GET[pagesize] : 1;
// 验证传值是否合法,判断是否为数字
if(!is_numeric($page)||!is_numeric($pageSize)){// 生成接口数据// 通过return告知其他工程师,下面程序不执行return Response::show(401,数据不合法);
}
// 编写SQL语句
// order by XXX desc 倒序排序
// limit 起始位置,数据条数
$offset ($page - 1) * $pageSize;
$sql select * from video where status 1 order by orderby desc limit.$offset.,.$pageSize;
// 捕获异常
try{// $connect:连接标识符$connect Db::getInstance()-connect();
}else(Exception $e){// 提示异常return Response::show(403,数据库连接失败);
}
// $result:资源标识符(结果集)
$result mysql_query($sql,$connect);
// 定义一个空数组,用于存储数据
$videos array();
// while循环输出所有的数据
while($video mysql_fetch_assoc($result)) {// 每次循环,自动生成id,且值会放入$videos数组中$videos[] $video;
}// 使用Response类中的方法,将$videos中的数据转换为json格式
// Response::show(状态码,提示语句,原始数据)
if($videos){return Response::show(200,首页数据获取成功,$videos);
}else{return Response::show(400,首页数据获取失败,$videos);
}
?方案二读取缓存方式开发接口连接数据库获取的同时缓存一份再次获取时不再连接数据库而是读取缓存可设置缓存失效时间 方案三定时读取缓存方式开发接口通过crontab