/**
* 获取类/对象的方法列表
*@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. ios框架中UIResponder的职责链设计模式应用

    今天有空,就把UIResponder的职责链图上传一下 如果不理解职责链设计模式的朋友,请参考:http://www.cnblogs.com/langtianya/p/4060941.html

  2. Jquery 获取URL参数

    使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下 1.window.location.href; 其实只是用到了javas ...

  3. java工具类包

    Hutool 提供丰富的java方法,其maven引用 <dependency> <groupId>com.xiaoleilu</groupId> <arti ...

  4. 机器学习公开课笔记(4):神经网络(Neural Network)——表示

    动机(Motivation) 对于非线性分类问题,如果用多元线性回归进行分类,需要构造许多高次项,导致特征特多学习参数过多,从而复杂度太高. 神经网络(Neural Network) 一个简单的神经网 ...

  5. 悦动达人 (多维dp)

    悦动达人 Description 一个游戏,在屏幕上有5个格子形成一行,每一秒都会有一个格子闪烁,格子闪烁时你需要保证至少有一只手指在格子上面, 现在我们已经知道第i秒时,第xi个格子会闪烁,我们假设 ...

  6. cocos基础教程(1)Mac环境下搭建

    下面主要介绍cocos2d-x环境的设置以及android的环境搭建 1.下载cocos2d-x 3.0正式版      http://www.cocos2d-x.org/download 2.下载a ...

  7. Spring常用的接口和类(一)

    一.ApplicationContextAware接口 当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口.代码展示如下: p ...

  8. 作为一名职高生学习Linux的心酸经历

    当你点进这篇文章的时候,一定会好奇我为什么要用“心酸”这个词,这个词已经太久没被人提起,也许心酸这种感情只能存在于一个人在追中梦想过程中内心角落吧.从小我们总是会被问这样一个问题“你的梦想是什么?”每 ...

  9. 第13章 使用Bind提供域名解析服务

    章节简述: 本章节将让您理解DNS服务程序的原理,学习正向解析与反向解析实验,掌握DNS主服务器.从服务器.缓存服务器的部署方法. 够熟练配置区域信息文件与区域数据文件,以及通过使用分离解析技术让不同 ...

  10. mysql.msi安装流程

    Mysql For Windows安装图解 演示安装版本:mysql-5.5.20-win32.msi(目前是mysql for windows的最新版)安装环境:Windows Server 200 ...