DAY16 - 函数(调用机制、封装、内部函数、回调、递归、网站基本布局)
8.1函数介绍
说明:函数的作用在于对一个功能的封装,封装后在别的页面中引入并调用,可以节省代码量,可以冗余。
8.1.1函数的定义
Function 函数名(【形参1】【,参数2】【,形参n......】){
要封装到函数的代码;
【return 返回值】;
}
8.1.2函数的调用
说明:直接使用需要调用的函数的名就可以了。
函数名(【实参1】【,实参2】【,实参n......】);
8.1.3函数的相关细节
1.函数定义时的形参,不是一个具体的数值,而是需要接收“实参”的工具而已,形参必须是变量。
2.形参可以给默认值,且可以是多种类型的数据
3.实参就是要给函数传递数据用的工具,可以是具体的值,可以是变量,实参必须和形参“一一对应”;
4.函数名遵循变量的定义规则:字母、数字、下划线且不能以数字开头.
5.函数名不能重复;
6.Return返回值,如果写了就会返回当前要返回的值,如果没写其实默认返回一个1或者null;
7.return如何返回多个值;
8.返回值必须使用一个变量到函数的调用者这个位置进行接收。
9.如果传递多个值--数组
10.函数的变量称为“局部变量”,不能在函数外使用。
8.2函数的调用机制
8.2.1代码:
8.2.2说明:
1.函数的调用者把实际的数据传递给函数的形参,这个时候的形参只能在函数内使用。
2.函数在运行代码时会新建一个新空间来运行函数内的代码
3.运行代码后,如果有返回值,把结果返回给函数的调用者,这个时候运行函数的这个新的空间销毁
8.2.4图解:
8.2.4其他说明:引用传递
说明:有的函数可以直接使用全局变量,这个时候是引用传递
8.3函数的封装性
题:使用一个表单,输入任意数字,使之可以在2,8,16进制到10进制或10进制到2,8,16进制之间转换,形式大致如下如下:
案例:
说明:在一个函数中调用另一个函数,这个时候称为“回调”;
案例:
说明:匿名函数就是没有名称的函数,这个时候需要用一个变量来存储函数。
案例:
说明:在一个函数内部再定义函数,这个时候里面的函数只能在函数内使用,不能在外部使用,防止外部人调用函数,这种函数方式不多,面向对象中都是这种方式。
案例:
说明:在一个函数内部再次有条件调用自己(当前函数),这个时候就称为“递归调用”,即自己调用自己。
代码:
图解:
注意:
1.递归调用必须有一个可以退出的条件,否则无法退出递归调用,就会成死归,也就是说必须逐渐的退出。
2.在递归调用时每次调用一次函数都开辟一个新栈,这些栈是没有关系的。
案例:
斐波那契数列:每个数字都是由前面的两个数字的和,第一个和第二个除外。
1,1,2,3,5,8,13,21,34.............................
问:给一个数看当前数的值是多少。
代码实现:准备模板
1.创建目录
2.创建配置文件
3.实现功能--封装函数
<?php //入口文件 //引入配置文件 require_once './config/conn.php'; //调用数据库函数库来获取数据 require_once LIB_ROOT . 'MySQL_func.php'; //var_dump($link_mysql_info); //调用链接函数 mysql_link($link_mysql_info['host'],$link_mysql_info['root'],$link_mysql_info['pass'],$link_mysql_info['charset'],$link_mysql_info['dbname']); //可以调用获取所有数据的函数 $arr = select_data('php07_student');
var_dump($arr);
/*
array (size=5)
'host' => string 'localhost' (length=9)
'root' => string 'root' (length=4)
'pass' => string '' (length=0)
'charset' => string 'utf8' (length=4)
'dbname' => string 'php07' (length=5)
*/
//引入首页的模板
require_once TEMPS_ROOT_HOME . 'index.html';
?>