php函数的常用方法及注意之处小结


Posted in PHP onJuly 10, 2011
<?php 
/** 
* @author Yuans 
* @copyright php.com 
* @package 函数的常用使用方法及特性. 
*/ 
# 基础函数编写注意点. 
// 为了方便ide的管理及代码提示功能,我们在所有函数命名时使用fun_开头. 
function fun_cutstr($str,$str_width=0,$str_pad='...'){ 
// 每个函数都得考虑一些异常的情况, 比如函数引入不对, 为0,为false等. 
// 由于外部期望返回截取字符后的字符,所以就算此函数不工作,也应该将它传进来的值给返回. 
if(empty($str) === true || empty($str_width) === true) 
return $str; 
// 参数过滤 
$str_width += 0; 
// 保持一个原则, 尽量不要去污染原始参数, 
$return_str = mb_strcut($str,0,$str_width,'utf-8'); 
// 加强判断, 如果return_str无法有值,由于是mb函数,许多服务器会无法执行. 
if(empty($return_str) === false){ 
return $return_str.$str_pad; 
}else{ 
return $str; 
} 
} 
echo fun_cutstr('aaaaaaaaaaaaaaaaaaaaaaaa',5); // out disply: "aaaaa..."; 
# 由于是utf-8编码, 所以每个汉字为4字节, 此处将返回"我是..."; 
echo fun_cutstr('我是个技术工作者',8); 
# 或者我们需要考虑对函数的严重破坏,比如如下函数 
echo fun_cutstr(false); //out: false 
echo fun_cutstr('tbbbbbbbbs','aaaaaaaa'); // out: tbbbbbbbbs 
echo fun_cutstr('','aaaaaaaa'); //out: empty 
?>

PHP函数的一些基础知识
A: 跟变量命名一样,不可以内置函数名,不可以用数字来命名函数.
B: 重复调用性.
C: 支持静态元素.
D: 支持不固定参数
个人建议技术员对函数做如下规范:
A: 函数名建立分类前缀, 比如字符型的就str_xxx, 布尔型的就 bool_xxxx, 公共函数就 open_xxx 应用型的函数就 APP_xxxx, 临时型的就 temp_xxx
B: 函数的第一步请先判断, 虽然有时自己知道一定会传入某个类型的参数,但作为标准化来说, 先判断再处理是为了程序的健壮也是为了安全.
C: 不要污染原始变量, 如果你有项目经验,有debug应用经验,你就会明白.
D: 引用函数尽量少用,占用内存非常大,损耗严重.
E:不要用大写来编写代码, 不要觉得很cool.
F: 过份产生函数是一种退步的方式, 你可以思考着是否具有重复性, 是否需要包装性, 随意将过程封成函数不是明智之举.
G: 写好你的函数注释.
<?php 
$b = &fun_cutstr('aaaaaaaaaaaaaaaaaaaaaaaa',5); // out disply: "aaaaa..."; 
fun_cutstr('cccccccccccccccccc',5); 
echo $b; 
?>

引用函数将在php 5.3版本上无法正常运行, 6.0也最终将其抛弃, 理论上讲echo $b,将会返回ccccc...
$b引入了函数的地址, 为此函数的任何改变都会被赋值给$b.
当然这些真的可以很少用, 不必太在意,特别是新学习者.
静态函数如下表示:
<?php 
/** 
* @author Yuans 
* @copyright php.com 
* @package 函数的常用使用方法及特性. 
*/ 
# 静态函数编写注意点. 
function fun_static(){ 
static $a = 1; 
echo $a ++; 
} 
fun_static(); 
fun_static(); 
fun_static(); 
?> 
static $a = 1; 仅会在第一次调用函数时执行, 表明它是个静态, 第二次执行时, $a变量就是取回静态的值, 而不会去执行$a = 1的赋值.如此类推, 数值不停地相加.<BR>
PHP 相关文章推荐
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php 高效率写法 推荐
Feb 21 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
php下拉选项的批量操作的实现代码
Oct 14 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php无序树实现方法
Jul 28 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
php文件上传、下载和删除示例
Aug 28 PHP
PHP实现添加购物车功能
Mar 06 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 #PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 #PHP
PHP的一个基础知识 表单提交
Jul 04 #PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 #PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 #PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 #PHP
ajax 的post方法实例(带循环)
Jul 04 #PHP
You might like
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
jquery动态添加option示例
2013/12/30 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
javascript定时器完整实例
2015/02/10 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python读取csv文件实例解析
2019/12/30 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python调用私有属性的方法总结
2020/07/24 Python
英国假发网站:Hothair
2018/02/23 全球购物
公务员职业生涯规划书范文  
2014/01/19 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015年防汛工作总结
2015/05/15 职场文书
民间借贷被告代理词
2015/05/23 职场文书
六五普法心得体会2016
2016/01/21 职场文书
高中生物教学反思
2016/02/20 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript