-
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代码如下:
- <?php
- /**
- * @author Yuans
- * @copyright php.com
- * @package 函数的常用使用方法及特性.
- */
- # 基础函数编写注意点.
- // 为了方便ide的管理及代码提示功能,我们在所有函数命名时使用fun_开头.
- function fun_cutstr($str,$str_width=0,$str_pad='...'){
- // 每个函数都得考虑一些异常的情况, 比如函数引入不对, 为0,为false等.
- // 由于外部期望返回截取字符后的字符,所以就算此函数不工作,也应该将它传进来的值给返回.
- if(emptyempty($str) === true || emptyempty($str_width) === true)
- return $str;
- // 参数过滤
- $str_width += 0;
- // 保持一个原则, 尽量不要去污染原始参数,
- $return_str = mb_strcut($str,0,$str_width,'utf-8');
- // 加强判断, 如果return_str无法有值,由于是mb函数,许多服务器会无法执行.
- if(emptyempty($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函数的一些基础知识,代码如下:
- <?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的赋值.如此类推,数值不停地相加.
出处:http://www.phpfensi.com/php/20140519/3012.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式