/**
* 获取类/对象的方法列表
*@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. JavaScrip操作Cookie

    //生成cookie function addCookie(sName, sValue, day) { var expireDate = new Date(); expireDate.setDate( ...

  2. centos6.4yum搭建lamp环境

    1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 8 ...

  3. Swig 使用指南

    如何使用 API swig.init({ allowErrors: false, autoescape: true, cache: true, encoding: 'utf8', filters: { ...

  4. iOS 用instancetype代替id作返回类型有什么好处?

    2014-07-07更新:苹果在iOS 8中全面使用instancetype代替id Steven Fisher:只要一个类返回自身的实例,用instancetype就有好处. @interface ...

  5. QQ微信与智能家电连接一起 小马哥"连接一切"野心凸显

    昨日,彭博社对于海南举行的腾讯全球合作伙伴大会进行了报道,文章指出腾讯公司正在发力移动端,将其即时通讯工具QQ和微信与烤箱.电视.空调等其他家电连接在一起.小马哥"连接一切"的野心 ...

  6. PV公式

    IP(独立IP):  即Internet Protocol,指独立IP数.00:00-24:00内相同IP地址之被计算一次.PV(访问量):  即Page View, 即页面浏览量或点击量,用户每次刷 ...

  7. MySQL之aborted connections和aborted clients

    影响Aborted_clients 值的可能是客户端连接异常关闭,或wait_timeout值过小. 最近线上遇到一个问题,接口日志发现有很多超时报错,根据日志定位到数据库实例之后发现一切正常,一般来 ...

  8. 在CentOS 7 上搭建LAMP

    导读 要求:httpd的动态和静态资源分为两台主机提供,mysql也用单独一台主机.httpd服务提供虚拟主机,一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress.安装 ...

  9. HDOJ 1590

    #include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> u ...

  10. HTML前端——CSS样式

    使用CSS样式的方式: HTML<!DOCTYPE> 声明标签 内链样式表<body style="background: green; margin: 0; paddin ...