学习目的:实现复用
一、为什么学函数
1.联系是系统被分成若干模块后,模块同模块的联系称为块间联系;一个模块内部各成份的联系称为块内联系。显然,模块之间的联系多,则模块的相对独立性就差,系统结构就混乱;
相反,模块间的联系少,各个模块相对独立性就强,系统结构就比较理想。同时,一个模块内部各成份联系越紧密,该模块越易理解和维护。
2.模块化是软件设计和开发的基本原则和方法,模块独立性不同模块相互之间联系尽可能少,应尽可能减少公共的变量和数据结构;一个模块应尽可能在逻辑上独立,有完整单一的功能。
3.内聚度是模块内部各成份(语句或语句段)之间的联系。显然,模块内部各成份联系越紧,即其内聚度越大,模块独立性就越强,系统越易理解和维护。
4.耦合度是从模块外部考察模块的独立性程度。它用来衡量多个模块间的相互联系。
5.高内聚,低耦合是好的软件的标准,但是要注意控制度,不是内聚度特别高,耦合度特别低就好,要适中
6.自顶向下 从抽象到具体
7.其实讲到这里我们在学习一下数组就可以进行开发了,但是写着写着你就会发现某些类似的代码片段会重复的在一个或多个php文件中出现,
此时如果我们想要修改代码时就需要修改多处,加上我们看代码的时候也不方便,严重影响我们去维护代码。我们把这些重复的片段称之为代码冗余。
那么问题来了,如何解决代码冗余呢?就引出来我们要讲的函数了,他可以把这些类似的代码片段代码封装起来,在需要的时候调用即可,需要修改代码的时候就修改这个函数就可以了。
php有两类函数,一类是php已经实现了的,我们称之为内置函数,一类是我们根据自己需要写的函数,他被称之为自定义函数。
二、自定义函数
1.函数声明
提到函数我们就有必要回忆一下之前提到的命名法了,因为函数名的命名法与变量的命名法一样,可以为驼峰也可以是带下划线的命名方式,不过驼峰命名法是我们常用的,
函数名和变量名都用的是小写字母开头的驼峰命名法,即当函数名中出现多个单词时除了第一个单词首字母小写其余的单词的首字母都必须大写。
接下来就是书写格式了函数的用function声明然后空一格写函数名然后紧跟一个小括号,与循环控制语句不同的是他后面的大括号单独占一行,在函数内声明变量时一定要放在代码的最前面。
声明例子如下:
<?php function myFun() { //代码快 } ?>
2.函数传参与返回值
如果我们想要通过函数处理一个数据并且返回处理后的结果怎么办呢?
传参顾名思义就是传递给函数值,参数就是传递的值,写在小括号内,参数的数量尽量不要超过三个,多了可以用数组去传递。
返回值 就用return 加上你要返回的变量。写函数的时候一定要留下注释描述函数的用途,参数和返回值,便于日后维护。例子如下:
<?php //输出朋友的性别,参数为朋友的姓名 function myFun($friendName) { $sex = ''; if ($friendName == 'tom' ) { $sex = 'boy'; } if ($friendName == 'maria' ) { $sex = 'girl'; } return $sex; } ?>
3.函数调用
在调用的时候传递的参数的名字可以和声明函数时写的参数不一致,调用过程中传递的参数被称之为实参,声明函数时的参数被称之为形参,形参是用来占位的,实参负责填充。
<?php
$name1 = 'tom'; $name2 = 'maria'; $name3 = 'jim'; $sex1 = myFun($name1); $sex2 = myFun($name2); $sex3 = myFun($name3); output($name1, $sex1); output($name2, $sex2); output($name3, $sex3); //输入姓名,如果是朋友的则返回他的性别,否则性别给空 function myFun($friendName) { $sex = ''; if ($friendName == 'tom' ) { $sex = 'boy'; } if ($friendName == 'maria' ) { $sex = 'girl'; } return $sex; } //输出语句 function output($name, $sex) { if ($sex == 'boy') { echo $name . 'is my firend, he is a handsome' . $sex; } elseif ($sex == 'girl') { echo $name . 'is my firend, she is a beautiful' . $sex; } else { echo $name . 'is not my firend'; } } ?>
上面是在一个php文件中调用函数,那么怎么实现跨php文件去调用函数呢?目前的做法是把其他php文件包含到当前的php文件上就可以调用那个文件的函数了
包含的办法有:
include:所要包含的文件存在错误,程序不会中断执行,会弹出一个警告
require:所要包含的文件存在错误,程序就会中断执行,会弹出一个致命错误
include_once和include以及require_once和require的区别在于前者在文件已经包含过了就不会再次包含了
三、内建函数
内建函数的功能很强大,用好了会对我们写代码有很大的帮助。
调用方法同自定义函数一样,会在字符串函数和数组函数中具体讲解。