/**
* 获取类/对象的方法列表
*@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实用的功能函数的更多相关文章

  1. SCWS中文分词,功能函数实例应用

    结合前文的demo演示,现写一个实用的功能函数,使用方法:header('Content-Type:text/html;charset=UTF-8');$text        = '我是一个中国人, ...

  2. 10个不太为人所知的,但实用的PHP函数

    10个不太为人所知的,但实用的PHP函数 您的评价:       较差  收藏该经验     阅读目录 php_check_syntax highlight_string show_source ph ...

  3. mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理

    mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍, 刚好我们的生产业务场景中就有这个一个案例... 一: ...

  4. php文字、图片水印功能函数封装

    一直在做有关php文字图片上传方面的工作,所以把此功能函数整理了一次,现在分享给大家. <?php class image { var $g_img; var $g_w; var $g_h; v ...

  5. php实现数字格式化,数字每三位加逗号的功能函数

    原地址:http://www.jb51.net/article/73781.htm php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 ...

  6. jQuery基础之(三)jQuery功能函数前缀及与window.onload冲突

    1.jQuery功能函数前缀 在javascript中,开发者通常会编写一些小函数来处理各种操作细节,例如在用户提交表单时,要将文本框最前端和最末端的空格内容清理掉.而javascript中没有类似t ...

  7. Qt调用dll中的功能函数

    声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的.并且用我前两篇有关DLL文章里面的方法,从dll中导出了导入库(.lib)文件,dll中有两个函数,原型如下:   ...

  8. [经验共享] MapGIS实用小功能图解——由excel文件导成MapGIS点文件

    项目小组的几个成员都是学地下水和环境的,对于GIS懂得不是很多,于是把一些我们经常用到的mapgis实用小功能做成帮助文档,方便大家使用,发布共享! 1.整理好EXCEL文件(注意X,Y坐标的正确性( ...

  9. Impala系列: Impala常用的功能函数

    --=======================查看内置的函数--=======================hive 不需要进入什么内置数据库, 即可使用 show functions 命令列出 ...

随机推荐

  1. 一步一步教你如何在linux下配置apache+tomcat(转)

    一步一步教你如何在linux下配置apache+tomcat   一.安装前准备. 1.   所有组件都安装到/usr/local/e789目录下 2.   解压缩命令:tar —vxzf 文件名(. ...

  2. HttpResponse对象

    为了响应客户端的请求,同样定义了代表响应的类:HttpResponse类,它也定义在命名空间System.Web下,提供向客户端响应的方法和属性. HttpResponse常用属性和方法 响应对象用于 ...

  3. Hadoop之伪分布环境搭建

    搭建伪分布环境 上传hadoop2.7.0编译后的包并解压到/zzy目录下 mkdir /zzy 解压 tar -zxvf hadoop.2.7.0.tar.gz -C /zzy     配置hado ...

  4. Java中的封装

    在前面的一些日子里,一只都在学习C#语言,使用C#在做一些小项目的,今天转到了Java的学习,还是感觉有点的不习惯,没有以前的中文界面的,全是英文.写起代码来都一直保持着C#中的编码的习惯,但是学习J ...

  5. HTML中的IE条件注释

    IE条件注释是一种特殊的HTML注释,这种注释只有IE5.0及以上版本才能理解.比如普通的HTML注释是: <!--This is a comment--> 而只有IE可读的IE条件注释是 ...

  6. crontab报错

    $mail 选择对应的数字查看邮件 File "/opt/app/python/tv-cms-for-ch/current/scripts/sync_cms_for_ch.py", ...

  7. function foo(){}、(function(){})、(function(){}())等函数区别分析

    前面一段时间,看到(function(){}),(function(){}())这些函数就犯晕,不知道它到底是什么意思,为什么函数外要加小括号,函数后要加小括号,加和不加到底有什么区别……一直犯迷糊, ...

  8. HDU3348(贪心求硬币数

    ;} coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. Linux MySQL差异备份技巧

    MSSQL差异备份使用技巧 15 Apr 2013 所谓的差异备份,就是只备份最近一次备份之后到此次备份之前所增加的那一部分数据.打个比方我第N次备份后数据库存放的内容是ABCD,然后我第N+1次 备 ...

  10. HDOJ 2095

    find your present (2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/1024 K (Java/Oth ...