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 相关文章推荐
输出控制类
Oct 09 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
php 常用类整理
Dec 23 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
详解PHP中的PDO类
Jul 06 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 PHP
PHP7新增函数
Mar 09 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
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
python3访问sina首页中文的处理方法
2014/02/24 Python
Python中的filter()函数的用法
2015/04/27 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
如何写python的配置文件
2020/06/07 Python
Django权限控制的使用
2021/01/07 Python
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
青蓝工程实施方案
2014/03/27 职场文书
老公给老婆的保证书
2014/04/28 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
Python机器学习三大件之一numpy
2021/05/10 Python
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers