PHP实用的功能函数
/**
* 获取类/对象的方法列表
*@param unknown $argument 类/对象
*@param array|string $filter 过滤
*@return array 类似:[]
*/ function class_get_methods($argument, $filter = null){ $filters = 0;
if(!empty($filter)){
if(is_string($filter)) $filter = explode(',', preg_replace('/\s+/', '', $filter));
$option = array(
'static'=>\ReflectionMethod::IS_STATIC,
'public'=>\ReflectionMethod::IS_PUBLIC,
'protected'=>\ReflectionMethod::IS_PROTECTED,
'private'=>\ReflectionMethod::IS_PRIVATE,
'abstract'=>\ReflectionMethod::IS_ABSTRACT,
'final'=>\ReflectionMethod::IS_FINAL,
); foreach($filter as $value){
$filters = $filters | $options[$value];
}
} $class = new \ReflectionClass($argument);
$ReflectionMethods = empty($filters)? $class->getMethods() : $class->getMethods($filters);
$methods = [];
foreach($ReflectionMethods as $ReflectionMethod){ $function = new ReflectionMethod($ReflectionMethod->class, $ReflectionMethod->name);
//取得参数列表
$parameters = $function->getParameters();
foreach($parameters as $parameter){
$aaa[$ReflectionMethod->name][] = '$'.$parameter->name;
}
if(isset($aaa[$ReflectionMethod->name]))
$methods[] = $ReflectionMethod->name . '('. implode(', ', $aaa[$ReflectionMethod->name]) .' )';
else
$methods[] = $ReflectionMethod->name . '()';
}
return $methods; }
来源:当初学phalcon框架时,没有php源码,不知道对象有哪些方法,及使用时传递什么参数.
示例:p(class_get_methods('Exception'));

/**
* 计算薪资范围属于哪些区间
*@param string $range 范围
*@param array|string $intervals 区间
*@return NULL|array 匹配的区间
*/
function interval($range, $intervals){ if(is_string($intervals)) $intervals = [$intervals]; $range = explode('-', $range);
$result = null;
foreach($intervals as $key => $value){ $interval = explode('-', $value);
if($interval[0] < $range[0] && $range[0] <= $interval[1]){
$result[] = $value;
}else if($range[0] < $interval[0] && $interval[0] < $range[1]){
$result[] = $value;
} } return $result; }
来源:在招聘网站上通过薪资范围进行筛选时,发现并不准确,感觉这确实是个算法问题于是,自己实现了一下.
示例:
$range = '6-23';
$intervals = ['3-5', '5-10', '10-15', '15-20', '20-25', '25-30' ];
p('范围:' . $range, '区间:', $intervals, '结果:', interval($range, $intervals));

/**
* 打印数据
* $args 参数列表
*/
function p($args = ''){ $args = func_get_args();
$count = func_num_args();
if($count == 0) $args = ['#----mark here----#']; if(in_array($args, ['@post', '@get'])) {
if($args == '@post') $args = $_POST;
if($args == '@get') $args = $_GET;
} $ajax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false;
if(!$ajax) echo '<pre style="background:#efefef;padding:5px 0 0 5px;border: 1px solid #aaa;">';
foreach($args as $key => $data){
if (is_bool($data)) {
$data = $data? '#true' : '#false';
}elseif(empty($data)){
if(is_null($data)) $data = '#null';
if($data === '') $data = '#empty';
}
if($data instanceof \Exception){
$data = ['Class'=>get_class($data), 'Message' => $data->getMessage() . ' (' .$data->getCode() .')', 'File'=>$data->getFile() . ' (' .$data->getLine() .')'];
} if($ajax){
echo "\r\n"; print_r($data); echo "\r\n";
}else{
print_r($data);
if($key != $count - 1) echo '<hr/>';
}
}
if(!$ajax) echo '</pre><br/>';
}
来源:p函数是自己写的代替print_r的.
示例:上面也看到了它如此好用.
/**
* 读取sql标准的文件
*@param string $file 文件
*@param boolean $toarray 是否返回数组
*@return string|array
*/
function getSql($file, $toarray = false){ $content = preg_replace(['/[\r|\n]+\s?(((--\s+|#).*)|\/\*(.|\n)*\*\/)/', '/[\r|\n]+/'], '', file_get_contents($file));
if($toarray) $content = array_filter(explode(';', $content));
return $content;
}
来源:项目开发时,会初始化一些表数据,每次都手动添加或修改,很麻烦.于是想到把处理好的表数据导出为sql文件,每次代码测试时,都把表数据初始化一遍.
/**
* 发送HTTP请求方法
* @param string $url 请求URL
* @param array $data 发送数据
* @param string $method 请求方法
*/
function curl($url, $data=[], $method='get', $options=[]){ $options += array(CURLOPT_URL=>$url, CURLOPT_TIMEOUT=>30, CURLOPT_RETURNTRANSFER=>true, CURLOPT_SSL_VERIFYPEER=>false);
if(!empty($data)) $options[CURLOPT_POSTFIELDS] = $data;
$options[CURLOPT_CUSTOMREQUEST] = strtoupper($method); $ch = curl_init();
curl_setopt_array($ch, $options);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
return $error? false : $data; }
/**
* 文本文件转数组:
* 文件内容:
北京 111
天津 222
* @param unknown $content 文件路径或文本内容
* @return multitype:
*/
function text2array($content){ if(is_file($content)) $content = file_get_contents($content);
$content = array_filter(explode("\r\n", trim($content)));
foreach($content as $value){
$data[] = array_values(array_filter(explode(' ', $value)));
}
return $data;
}
PHP实用的功能函数的更多相关文章
- SCWS中文分词,功能函数实例应用
结合前文的demo演示,现写一个实用的功能函数,使用方法:header('Content-Type:text/html;charset=UTF-8');$text = '我是一个中国人, ...
- 10个不太为人所知的,但实用的PHP函数
10个不太为人所知的,但实用的PHP函数 您的评价: 较差 收藏该经验 阅读目录 php_check_syntax highlight_string show_source ph ...
- mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理
mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍, 刚好我们的生产业务场景中就有这个一个案例... 一: ...
- php文字、图片水印功能函数封装
一直在做有关php文字图片上传方面的工作,所以把此功能函数整理了一次,现在分享给大家. <?php class image { var $g_img; var $g_w; var $g_h; v ...
- php实现数字格式化,数字每三位加逗号的功能函数
原地址:http://www.jb51.net/article/73781.htm php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 ...
- jQuery基础之(三)jQuery功能函数前缀及与window.onload冲突
1.jQuery功能函数前缀 在javascript中,开发者通常会编写一些小函数来处理各种操作细节,例如在用户提交表单时,要将文本框最前端和最末端的空格内容清理掉.而javascript中没有类似t ...
- Qt调用dll中的功能函数
声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的.并且用我前两篇有关DLL文章里面的方法,从dll中导出了导入库(.lib)文件,dll中有两个函数,原型如下: ...
- [经验共享] MapGIS实用小功能图解——由excel文件导成MapGIS点文件
项目小组的几个成员都是学地下水和环境的,对于GIS懂得不是很多,于是把一些我们经常用到的mapgis实用小功能做成帮助文档,方便大家使用,发布共享! 1.整理好EXCEL文件(注意X,Y坐标的正确性( ...
- Impala系列: Impala常用的功能函数
--=======================查看内置的函数--=======================hive 不需要进入什么内置数据库, 即可使用 show functions 命令列出 ...
随机推荐
- Yacc 与 Lex 快速入门
Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 Lex 和 Yacc 是 UNIX 两个非常重要的.功能强大的工具.事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 ...
- Protocol Buffers介绍
基本概念 Protocol Buffers(以下简称PB)是一种独立于语言.独立于开发平台.可扩展的序列化数据结构框架,它常常被用在通信.数据序列化保存等方面. PB是一种敏捷.高效.自动化的用于对数 ...
- 部署细节回忆录(包括了nginx重启)
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) $cap -T $cap deploy:setup $cap deploy (遇 ...
- Apache Common DbUtils
前段时间使用了Apache Common DbUtils这个工具,在此留个印,以备不时查看.大家都知道现在市面上的数据库访问层的框架很多,当然很多都是包含了OR-Mapping工作步骤的 例如大家常用 ...
- Delphi10 安装Graphics32
一.下载Graphics安装包 官网:www.graphics32.org 下载地址:http://sourceforge.net/projects/graphics32/files/graphics ...
- django template中load的作用
某些应用提供自定义标签和过滤器库. 要在一个模板中访问它们, 使用 {% load %} 标签: {% load comments %} {% comment_form for blogs.entri ...
- 【架构】docker环境搭建mysql主从
序 本文主要研究怎么在docker上搭建mysql的主从.因为在单机搭建mysql多实例然后再配主从,感觉太痛苦了,环境各有不同,配置各不大相 同,从网上找搭建方法,试了半天也没成功,最后也没耐心调试 ...
- ASP.NET MVC 入门系列教程
ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...
- VIM替换、截取及追加操作
参考: http://blog.csdn.net/love__coder/article/details/6739670 http://blog.csdn.net/love__coder/articl ...
- liunx下安装MYSQL时需要安装的相关软件的作用
2013年11月16日 14:18:39 This installs the package for MySQL server (mysql-community-server) and also pa ...