版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元三PHP函数的定义与应用课程内容01自定义函数--设计带跳转的警告函数02变量作用域--简单购物车的设计03内置函数--解读身份证号的秘密04文件包含函数--实现页面模块化设计目录
导入项目概述通过前期实践,我们已实现基础程序结构,但复杂度提升导致重复代码问题,显著降低开发效率和可维护性,并可能引发逻辑错误。在PHP中,自定义函数封装常用操作,减少代码冗余,提升效率。例如,封装计算或字符串处理便于复用,简化结构和调试。本单元将阐述PHP函数的定义、调用及管理方法,包括参数传递、返回值处理等,以提升开发效率和质量,并探讨模块化设计支持大型项目协作与维护。
思维导图任务描述设计一个自定义PHP函数,实现以下功能:1.弹出警告框显示指定字符串,当点击警告框关闭按钮时,跳转到指定url;2.若不指定url,则关闭警告框,不跳转;3.若仅指定url而不指定字符串,则不显示警告框,直接跳转到该url。任务3.1设计带跳转的警告函数1.函数的定义1.函数的定义函数是一个被命名的、独立的代码块,用于执行特定任务,并可向调用者返回一个值。使用函数的优势主要有:提高代码重用性、增强软件可维护性、提升开发效率、增加软件可靠性、有效控制程序设计复杂度。函数语法格式:<?phpfunction函数名(参数1,参数2,...){//函数体:执行特定任务的代码……return$returnValue;//可选:返回一个值}?>函数头:函数以function开头,后跟唯一函数名(遵循变量命名规则),函数名应见名知义。函数名后接括号(),含可选形参列表,形参用逗号分隔。参数列表:定义于函数名后()中,接收实参。可有零或多个形参,形参与实参需一一对应。函数体:花括号{}包裹代码逻辑。调用时从第一条语句执行,遇return或结束花括号结束,控制权返回。return语句:可选,用于返回值。例3-1:分别设计一个输出姓名的无参数函数和有参数函数1.函数的定义<?phpfunctionHello1(){echo"HelloTom<br>";}functionHello2($name){echo"Hello{$name}<br>";}?>2.函数调用
函数未调用时不自动执行,调用时执行函数体内代码,完成后返回调用点。调用需用函数名,次数决定执行次数。有参数列表可在括号中传入值改变行为。有返回值则执行完毕返回该值。函数定义位置不影响调用。例3-2:调用例3-1中定义的无参和有参函数输出相关信息<?phpfunctionHello1(){echo"HelloTom<br>";}functionHello2($name){echo"Hello{$name}<br>";}Hello1();Hello2("小明");Hello2("小丽");?>3.函数参数
3.1按值传递的参数按值传递的参数是最常用的参数形式,比如上面的程序示例3-2中的Hello2函数就是按值传递的参数,实参将值传递给形参时,实际是将实参的值复制了一份传递给形参,在函数内形参值的变化不会影响到实参,但是需要注意实参和形参个数和位置需要一一对应,否则会报错。3.函数参数
3.2默认值参数在形参中可以设置默认值参数,当实参不传递具体值给形参时,形参可以使用默认的值,默认值参数要位于必选参数之后,默认值参数可以让函数使用起来更灵活。例3-3:默认参数值的定义和使用<?phpfunctionconnect($host,$port=3306){//$port默认为3306echo"连接{$host}:{$port}成功<br>";}connect("localhost");//当使用默认端口时,可以只传递必选参数connect("localhost",8888);//自定义端口?>3.函数参数
3.3按引用传递的参数按引用传递的参数实际指向实参,可以理解为实参的别名,当在函数中改变按引用传递的参数值时,对应的实参值也会改变。函数要传递按引用传递的参数,只要在形参前面加上一个“&”符号即可。例3-4:引用参数的定义和使用<?phpfunctionincrement(&$num){$num++;//会影响实参的值}$a=5;echo"<br>传递参数前的值:".$a;increment($a);echo"<br>传递参数后的值:".$a;?>3.函数参数
3.4可变数量的参数在形参前面加上“…”,可以接收数量不确定的实参,形参接收到参数后会转换为一个数组,当实参数量不固定时可变数量的参数非常有用。例3-5:传递可变数量的参数<?phpfunctionsum(...$numbers){$acc=0;foreach($numbersas$n){//$n表示数组中的每个元素$acc+=$n;//$acc表示累加器}return$acc;}echosum(1,2,3);echo"<br>";echosum(1,2,3,4);?>4.函数的返回值
若需使函数返回特定值,应使用return语句。该语句后须跟随一个表达式(例如return$result;或returntrue;)。return语句在函数中承担双重功能:向调用方返回函数体内确定的计算结果,并立即将程序控制权交还调用方——这意味着函数执行将终止,后续语句将不再执行。若需返回多个值,不可连续使用多个return语句,而应将多个返回值整合至一个数组中,并通过return返回该数组;调用方需接收并解析此数组以获取返回值。未包含return语句的函数,或只有return语句无返回值的函数,其默认返回值为NULL。例3-6:函数返回值示例<?phpfunctionadd($x,$y){$total=$x+$y;return$total;}
echo"1+16=".add(1,16);?>任务3.1设计带跳转的警告函数——任务实施
根据前面自定义函数的相关知识,设计一个带跳转功能的警告框函数。生成一个自定义PHP函数,实现弹出警告框显示指定字符串message,当点击警告框关闭按钮时,跳转到指定url;如果不指定url,则关闭警告框,不跳转
;如果不指定字符串message,只指定url,则不显示警告框,直接跳转到url。functionalertRedirect($message='',$url=''){$script='';//初始化JavaScript代码为空字符串if(!empty($message))//如果传入了消息内容,添加显示警告框的代码$script="alert('{$message}');";if(!empty($url))//如果传入了跳转URL,添加页面跳转的代码$script.="window.location.href='{$url}';";if(!empty($script))//如果生成了JavaScript代码,则将其包裹在script标签中输出print"<script>{$script}</script>";}alertRedirect('操作成功','');//用法1:弹出警告框显示字符串,跳转到urlalertRedirect('','');//用法2:字符串为空,不弹出警告框,直接跳转到urlalertRedirect('操作成功');//用法3:url为空,仅弹出警告框显示指定字符串,不跳转任务3.2简单购物车的设计
本任务是一个简单的购物车模拟程序,用于演示PHP中全局变量和局部变量的作用域。程序定义了全局变量$totalAmount来记录购物车的总金额,并定义了addToCart函数用于向购物车中添加商品,同时计算商品的总金额并更新购物车的总金额。在函数内部通过global关键字访问和修改全局变量。程序还展示了在函数内部和外部访问变量时可能出现的作用域问题。1.PHP变量的作用域简介变量的作用域是指变量能够被有效访问和使用的代码范围。在PHP中,变量的作用域并非全局通用,而是根据声明位置的不同被严格划分,变量的作用域分类:根据声明位置的不同,PHP变量的作用域可分为局部变量和全局变量两大类,两者的使用规则和范围有明确区别。1.PHP变量的作用域简介2.1局部变量局部变量(又称内部变量)是在函数内部声明的变量,其作用域被严格限制在当前函数内部,函数外部无法直接访问。主要包括:(1)函数内直接声明的变量(如$a=10;);(2)函数的参数(如functiontest($b){...}中的$b),参数虽由外部传入,但仅能在函数内使用,因此也属于局部变量。局部变量核心特性:(1)函数执行结束后,局部变量会被自动销毁,内存中不再保留其值;(2)外部程序若需获取函数内的局部变量值,必须通过return语句返回。1.PHP变量的作用域简介例3-7:局部变量使用示例<?phpfunctiongetNum(){$num=100;//局部变量return$num;//返回值给外部}$result=getNum();//外部通过变量接收返回值echo$result;//输出:100?>局部变量这种“隔离性”可以避免不同函数间的变量相互干扰。1.PHP变量的作用域简介2.2全局变量全局变量(又称外部变量)是在函数外部声明的变量,其作用域从声明位置开始,直至当前PHP文件结束(除函数内部外的所有区域)。全局变量默认无法在函数内部直接使用,若需访问或修改,必须在函数内通过global关键字显式声明。例3-8:PHP全局变量作用域示例<?php$site="PHP教程";//全局变量functionshowSite(){global$site;//声明使用全局变量echo$site;//正确输出:PHP教程}showSite();?>1.PHP变量的作用域简介若未用global声明就直接在函数内使用全局变量,会触发“未定义变量”错误。以下通过对比代码示例,直观展示局部变量与全局变量的使用限制:例3-9:变量作用域示例<?php$globalVar="我是全局变量<br>";//全局变量functiontestScope(){$localVar="我是局部变量";//局部变量echo$localVar;//正常输出:我是局部变量(在函数内使用局部变量)echo$globalVar;//不能正常输出:未定义变量$globalVar(未声明全局变量)}testScope();echo$localVar;//不能正常输出:未定义变量$localVar(局部变量无法在外部使用)?>1.PHP变量的作用域简介正确使用局部变量和全局变量的方式应该是如下的程序。例3-10:函数内正确使用全局变量示例<?php$globalVar="我是全局变量<br>";functiontestGlobal(){global$globalVar;//声明使用全局变量echo$globalVar;//正常输出:我是全局变量$globalVar="修改后的全局变量";//修改全局变量值}testGlobal();echo$globalVar;//输出:修改后的全局变量(全局变量值已被函数内修改)?>任务3.2简单购物车的设计——任务实现本购物车程序演示PHP中全局变量和局部变量的作用域。程序定义一个全局变量$totalAmount来记录购物车的总金额,定义addToCart函数用于向购物车中添加商品,同时计算商品的总金额并更新购物车的总金额。在函数内部通过global关键字访问和修改全局变量。<?php$totalAmount=0;//全局作用域变量:定义购物车总金额functionaddToCart($productName,$price,$quantity=1)//定义一个函数:添加商品到购物车{//局部作用域变量:记录当前添加的商品信息$currentProduct="---已添加商品:{$productName},价格:{$price}元,数量:{$quantity}斤";echo"在函数内部:<br>{$currentProduct}<br>";$currentTotal=$price*$quantity;//局部作用域变量:计算当前商品的总金额echo"---当前商品总金额:{$currentTotal}元<br>";//使用global关键字在函数内部访问全局变量global$totalAmount;$totalAmount+=$currentTotal;}任务3.2简单购物车的设计——任务实现echo"在函数外部:<br>";echo"---当前购物车总金额:$totalAmount元<br>";//尝试访问局部变量,这会报错,因为$currentProduct在函数外部不可访问//echo"尝试访问当前添加的商品信息:$currentProduct<br>";//调用函数添加商品echo"<br>添加商品到购物车:<br>";addToCart("苹果",5,2);//调用函数添加商品addToCart("香蕉",3,3);//显示最终购物车信息echo"购物车总金额:$totalAmount元<br>";?>任务3.3解读身份证号的秘密
任务概述用户注册时要收集用户很多信息,但有些信息可能存在重复收集的问题,比如身份证号码中就隐藏着出生日期、性别等信息,那么如何通过读取身份证号码获取正确的出生日期、性别等信息呢?本任务将使用PHP内置函数完成身份证号的解读,本任务仅处理18位的身份证号。PHP的强大之处源于其丰富的函数库,它内置了超过1000个函数,这些函数随时可以调用,这大大提高了程序开发效率。下面我们按类别介绍一些常用的函数,以帮助开发者快速掌握和使用。内置函数PHP变量处理函数是PHP核心的一部分,无需安装即可使用这些功能。常用的变量处理函数有:(1)isset():该函数检查括号内变量是否已设置,这意味着该变量必须已声明且不为NULL。如果变量存在且不为NULL,则该函数返回true,否则返回false。(2)empty():检查变量是否为空。(3)unset():销毁指定变量,可以与isset()。例3-11:使用isset()函数测试变量是否已经设置。<?php$a=0;if(isset($a)){echo"变量a设置了值,不为NULL";}?>内置函数2.类型转换函数(1)intval():转换变量为整型。(2)floatval():转换变量为浮点型。(3)strval():转换变量为字符串。4.数组处理函数(1)array_keys():返回数组的键名。(2)array_values():返回数组中的值。(3)array_merge():合并一个或多个数组。3.字符串处理函数(1)strlen():获取字符串长度。(2)strpos():查找字符串首次出现的位置。(3)substr():提取字符串的一部分。内置函数5.文件处理函数(1)fopen():打开文件或URL。(2)fgets():从文件中读取一行。(3)fclose():关闭文件。6.数学函数(1)rand():生成一个随机整数。(2)max():返回多个值中的最大值。(3)min():返回多个值中的最小值。7.日期和时间函数(1)date():格式化一个本地时间日期。(2)time():返回当前时间的Unix时间戳。(3)strtotime():将任何英文文本的日期时间描述转换为Unix时间戳。8.错误处理函数(1)trigger_error():生成一个用户定义的错误。(2)error_reporting():设置错误报告级别。内置函数例3-12:使用内置函数计算并输出字符串长度。<?php$greeting="HelloWorld!";echostrlen($greeting);?>这段代码将输出:12在这里,我们使用了strlen()函数来计算字符串中的字符数量。任务3.3解读身份证号的秘密——任务实施任务3.3综合使用常用PHP内置函数处理用户18位的身份证号,获取性别和出生日期。<?phpfunctiongetGenderAndBirthday($idCard){$idCard=strtoupper($idCard);//处理身份证号大小写echo"处理后的身份证号:".$idCard."<br>";if(strlen($idCard)==18){//获取出生日期$year=substr($idCard,6,4);$month=substr($idCard,10,2);$day=substr($idCard,12,2);$birthday=$year.'-'.$month.'-'.$day;echo"出生日期:".$birthday."<br>";任务3.3解读身份证号的秘密——任务实施//获取性别数字,intval()用于将截取的字符转换为整数类型$genderNum=intval(substr($idCard,16,1));//第17位(索引16)为性别码if($genderNum%2==1)$gender='男';else$gender='女';echo"性别:".$gender."<br>";}else{echo"身份证号格式错误";}}//测试$idCard=;getGenderAndBirthday($idCard);?>
任务3.4使用文件包含函数实现页面模块化设计在许多网站开发场景中,多个页面往往需要共享相同的功能区域——比如网站的头部导航栏、页脚版权信息等元素,通常在所有页面中保持统一。为避免在每个页面重复编写相同内容,模块化开发方法应运而生——将这些重复区域提取出来,存储到独立文件中。
页面头部导航栏可单独存为页头文件(如header.php),页脚版权信息则存入页脚文件(如footer.php)。通过文件包含的方式集成到当前页面——这种开发方式如同积木拼接,既能显著提升开发效率,又能增强维护的便利性。
任务3.4使用文件包含函数实现页面模块化设计在PHP中,require和include函数可以包含文件,将文件代码插入另一PHP文件执行。PHP不关注被包含文件类型。这些函数用于包含可以重复使用的代码等元素。使用文件包含语句(如include、require等),PHP可以避免重复编写代码,提升维护和更新效率。任务3.4使用文件包含函数实现页面模块化设计1.require的用法require用于包含指定文件,如果文件不存在或包含失败,脚本将停止执行并抛出致命错误(FatalError)。其基本语法为:require"文件名";任务3.4使用文件包含函数实现页面模块化设计例3-13:使用require包含文件的方式,设计一个新的网页文件about.php。具体步骤是:先建立两个文件header.html和footer.html,再使用包含文件的方式将header.html和footer.html包含到about.php中。<?phprequire"header.html";//包含头文件?><!--以下是about.php文件独特的部分--><main><h1>关于我们</h1><p>网站简介内容...</p></main><?phprequire"footer.html";//包含页脚文件footer.html?>任务3.4使用文件包含函数实现页面模块化设计2.include的用法include同样用于文件包含,但如果文件不存在,脚本仅发出警告(Warning)而继续执行。语法为:include"文件名";例3-14:建立3-14.php,使用include包含现有文件header.html和footer.html文件。<?phpinclude"header.html";//包含头文件?><!--以下是about.php文件独特的部分--><main><h1>关于我们</h1><p>网站简介内容...</p></main><?phpinclude"footer.html";//包含页脚文件footer.php?>任务3.4使用文件包含函数实现页面模块化设计include与require的功能完全一致,唯一区别在于错误处理方式不同:require会触发致命错误,导致脚本立即终止执行;include则产生警告,脚本在报错后仍会继续运行。若需要在包含文件缺失时继续执行脚本并向用户输出结果,请选用include语句。而在框架、内容管理系统(CMS)或复杂PHP应用程序的开发中,建议通过require语句引用所需的关键文件。当关键文件意外丢失时,require会立即终止脚本执行,此举能有效维护应用程序的安全性与完整性。任务3.4使用文件包含函数实现页面模块化设计3.include_once与require_once的用法在复杂网页中include和require有可能出现重复包含同一文件的问题,为避免重复包含,PHP中设计了include_once与require_once这两个函数,它们确保文件仅被包含一次,避免重复定义变量或函数的错误。include_once与require_once的语法类似:include_once"文件名.php";require_once"文件名.php";任务3.4使用文件包含函数实现页面模块化设计例3-15:使用require_once包含文件在公共配置文件config.php中定义一个表示网站名称的常量:<?phpdefine("SITE_NAME","我的网站");?>在多个页面中如果要显示网站名称,例如新建3-14.php,可以通过以下方式包含config.php:<?phprequi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年教师招聘考试语文科目专项训练模拟试卷(含答案)
- 2026年内蒙古中考物理真题试卷及答案
- 国际商务管理第四讲
- 化学毒物在体内的生物转运
- 烧碱生产工达标强化考核试卷含答案
- 泵装配调试工操作评估测试考核试卷含答案
- 轧管工岗前技能评估考核试卷含答案
- 手风琴装配工安全操作模拟考核试卷含答案
- 职业中专对口升学复习语文基础知识-5-辨析并修改病句36张讲解
- 药物分离纯化工标准化测试考核试卷含答案
- 2025年华为汽车考试题库答案
- 2025年福建泉州中泉国际经济技术合作有限公司招聘考试笔试试卷(附答案)
- 台风应急预案演练方案
- 儿童创伤急救的特点与处理流程
- 学校桶装饮用水采购供应合同协议书范本
- 最高人民法院各法庭关于建设工程施工合同无效情况下管理费如何处理的纪要和解答
- 全国计算机等级考试《三级网络技术》历年真题及解析
- 抽水蓄能电站施工监理规范征求意见稿-0920
- 大学物理(二)智慧树知到期末考试答案章节答案2024年上海电力大学
- 大学生数字素养现状调查
- 美学原理全套教学课件
评论
0/150
提交评论