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 相关文章推荐
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
php json_encode奇怪问题说明
Sep 27 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
php检测文本的编码
Jul 26 PHP
PHP最常用的正则表达式
Feb 13 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
PHP中常用的魔术方法
Apr 28 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python数据类型学习笔记
2016/01/13 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
python 获取网页编码方式实现代码
2017/03/11 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
python生成requirements.txt的两种方法
2019/09/18 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
会计专业个人求职信范文
2014/01/08 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
党在我心中演讲稿
2014/09/02 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python