PHP之封装一些常用的工具类函数
分享一些PHP中常用的工具里函数:
<?php /**
* Created by PhpStorm.
* User: Steven
* Date: 2016/8/12
* Time: 14:21
*/
class Utils
{ /**
* 将xml转换为数组
* @param $xml 需要转化的xml
* @return mixed
*/
static function xml_to_array($xml)
{
$ob = simplexml_load_string($xml);
$json = json_encode($ob);
$array = json_decode($json, true);
return $array;
} /**
* 将数组转化成xml
* @param $data 需要转化的数组
* @return string
*/
static function data_to_xml($data)
{
if (is_object($data)) {
$data = get_object_vars($data);
}
$xml = '';
foreach ($data as $key => $val) {
if (is_null($val)) {
$xml .= "<$key/>\n";
} else {
if (!is_numeric($key)) {
$xml .= "<$key>";
}
$xml .= (is_array($val) || is_object($val)) ? self::data_to_xml($val) : $val;
if (!is_numeric($key)) {
$xml .= "</$key>";
}
}
}
return $xml;
} /**
* PHP post请求之发送XML数据
* @param $url 请求的URL
* @param $xmlData
* @return mixed
*/
static function xml_post_request($url, $xmlData)
{
$header[] = "Content-type: text/xml"; //定义content-type为xml,注意是数组
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
$response = curl_exec($ch);
if (curl_errno($ch)) {
print curl_error($ch);
}
curl_close($ch);
return $response;
} /**
* PHP post请求之发送Json对象数据
*
* @param $url 请求url
* @param $jsonStr 发送的json字符串
* @return array
*/
static function http_post_json($url, $jsonStr)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($jsonStr)
)
);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); return array($httpCode, $response);
} /**
* PHP post请求之发送数组
* @param $url
* @param array $param
* @return mixed
* @throws Exception
*/
static function httpsPost($url, $param = array())
{
$ch = curl_init(); // 初始化一个 cURL 对象
curl_setopt($ch, CURLOPT_URL, $url); // 设置需要抓取的URL
curl_setopt($ch, CURLOPT_HEADER, 0); // // 设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
// 如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); // 传递一个作为HTTP “POST”操作的所有数据的字符串。//http_build_query:生成 URL-encode 之后的请求字符串
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type:application/x-www-form-urlencoded;charset=utf-8'
));
$rtn = curl_exec($ch); // 运行cURL,请求网页
if ($errno = curl_errno($ch)) {
throw new Exception ('Curl Error(' . $errno . '):' . curl_error($ch));
}
curl_close($ch); // 关闭URL请求
return $rtn; // 返回获取的数据
} /**
* 接收xml数据并转化成数组
* @return array
*/
static function getRequestBean()
{
$bean = simplexml_load_string(file_get_contents('php://input')); // simplexml_load_string() 函数把 XML 字符串载入对象中。如果失败,则返回 false。
$request = array();
foreach ($bean as $key => $value) {
$request [( string )$key] = ( string )$value;
}
return $request;
} /**
* 接收json数据并转化成数组
* @return mixed
*/
static function getJsonData()
{
$bean = file_get_contents('php://input');
$result = json_decode($bean, true);
return $result;
} /**
* 翻译中英文字符串(调换位置)
*/
static function m_strrev($string)
{
$num = mb_strlen($string, 'utf-8');
$new_string = "";
for ($i = $num - 1; $i >= 0; $i--) {
$char = mb_substr($string, $i, 1, 'utf-8');
$new_string .= $char;
}
return $new_string;
} /**
* 判断当前服务器系统
* @return string
*/
public static function getOS()
{
if (PATH_SEPARATOR == ':') {
return 'Linux';
} else {
return 'Windows';
}
} /**
* 日志方法
* @param $log
*/
static function writeLog($log)
{
$dir = __DIR__ . "/../Log/";
if (!is_dir($dir)) {
mkdir($dir);
}
$filename = $dir . date("Y-m-d") . ".log";
file_put_contents($filename, date("Y-m-d H:i:s") . "\t" . $log . PHP_EOL, FILE_APPEND);
} /**
* 签名验证函数
* @param $param 需要加密的字符串
* @param $sign 第三方已经机密好的用来比对的字串
* @return bool
*/
static function ValidateSign($param, $sign)
{
if (md5($param) == $sign) {
return true;
} else {
return false;
}
}
} ?>
PHP之封装一些常用的工具类函数的更多相关文章
- 【更新】【封装必备】封装辅助 - 清理&优化工具 For Win7(IT天空会员专版)
https://www.itsk.com/thread-353560-1-4.html nqawen 发表于 2015-7-9 17:26:37 本帖最后由 Amz 于 2015-11-25 10 ...
- 利用Jackson封装常用JsonUtil工具类
在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转 ...
- Android自动化测试探索(二)常用自动化工具
Android常用自动化工具 ADB - 是Google提供的为Android编写UI测试用例的自动化工具, Android开发/测试人员不可替代的强大工具 uiautomator - 是Google ...
- 常用网络工具 ipconfig arp traceroute
如今的计算机是离不开网络的计算机了,因而我们对网络要有一基础的认识.连不上网,程序运行不正常之类的,多少都与网络有关.本文将介绍常用的工具. 网络出问题 ipconfig ping 网络连不上,首先要 ...
- SharePoint 2013常用开发工具分享
众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协助开发人员简化开发流程.本文汇总几款SharePoint 2013开发常用开发工具,希望能够对大家有所帮助.如果您有更好的工具,没有包含在本 ...
- 常用备份工具是mysql自带的mysqldump
常用备份工具是mysql自带的mysqldump,mysqldump -u root -p密码 dbname >d:\test.sql ------------备份某个库mysqldump -u ...
- Android常用的工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Prefe ...
- java中常用的工具类(一)
我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...
- iOS开发拓展篇—封装音频文件播放工具类
iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...
随机推荐
- Android数据加密之异或加密算法
前言: 这几天被公司临时拉到去做Android IM即时通信协议实现,大致看了下他们定的协议,由于之前没有参与,据说因服务器性能限制,只达成非明文传递,具体原因我不太清楚,不过这里用的加密方式是采用异 ...
- OEL上使用yum install oracle-validated 简化主机配置工作
环境:OEL 5.7 + Oracle 10.2.0.5 RAC 如果你正在用OEL(Oracle Enterprise Linux)系统部署Oracle,那么可以使用yum安装oracle-vali ...
- .NET平台和C#编程的总结
第一章 简单认识.NET框架 (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework ...
- js 基础篇(点击事件轮播图的实现)
轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...
- 微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server
微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容 ...
- web前端的春天 or 噩梦
「 微信应用号可以做什么」 简单说,微信"小程序"可以为开发者提供基于微信的表单.导航.地图.媒体和位置等开发组件,让他们在微信的网页里构建一个 HTML 5 应用.同时微信还开放 ...
- ASP.NET MVC 描述类型(一)
ASP.NET MVC 描述类型(一) 前言 在前面的好多篇幅中都有提到过ControllerDescriptor类型,并且在ASP.NET MVC 过滤器(一)篇幅中简单的描述过,今天我们就来讲一下 ...
- CSharpGL(26)在opengl中实现控件布局/渲染文字
CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...
- Entity Framework 6 Recipes 2nd Edition(11-4)译 -> 在”模型定义”函数里调用另一个”模型定义”函数
11-4.在”模型定义”函数里调用另一个”模型定义”函数 问题 想要用一个”模型定义”函数去实现另一个”模型定义”函数 解决方案 假设我们已有一个公司合伙人关系连同它们的结构模型,如Figure 11 ...
- DAO层,Service层,Controller层、View层 的分工合作
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...