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 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
PHP面向对象分析设计的61条军规小结
Jul 17 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
php 运算符与表达式详细介绍
Nov 30 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
tp5框架的增删改查操作示例
Oct 31 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
PHP中调用JAVA
2006/10/09 PHP
PHP 递归效率分析
2009/11/24 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
《莫高窟》教学反思
2014/02/25 职场文书
住宅使用说明书
2014/05/09 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
详细分析PHP7与PHP5区别
2021/06/26 PHP
试了下Golang实现try catch的方法
2021/07/01 Golang
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers