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 相关文章推荐
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
php中的静态变量的基本用法
Mar 20 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
php服务器的系统详解
Oct 12 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
Apache设置虚拟WEB
2006/10/09 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
javascript一点特殊用法
2008/05/28 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python如何制作英文字典
2019/06/25 Python
python障碍式期权定价公式
2019/07/19 Python
python中time库的实例使用方法
2019/10/31 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
给校长的建议书
2014/03/12 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
赢在中国观后感
2015/06/02 职场文书