【PHP + 代码审计】函数详解

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

函数的基本概念

函数定义语法

函数命名规范

参数详解

形参

实参

引用传递

函数体

函数返回值

Return关键字:

作用域


函数的基本概念

函数:function,是一种语法结构,将实现某一个功能的代码块(多行代码)封装到一个结构中,从而实现代码的重复利用(复用)。

函数定义语法

函数有几个对应的关键点:function关键字、函数名、参数(形参和实参)、函数体和返回值

基本语法如下:

Function 函数名([参数]){

//函数体

//返回值:return 结果;

}

定义函数的目的:是为了实现代码的重复利用,一个功能一个函数(简单明了)

函数的使用:通过访问函数的名字();

函数命名规范

命名规范:由字母、数字和下划线组成,但是不能以数字开头

函数作为一种常用的结构,一般遵循以下规则:函数通常名字代表着函数的功能,而有些功能会比较复杂,可能一个单词不足以表达,需要多个组合。

1、 驼峰法:除了左边第一个单词外,后面所有的单词首字母都大写:showParentInfo()

2、 下划线法:单词之间通过下划线连接,单词都是小写:show_parent_info()

函数名字:在一个脚本周期中,不允许出现同名函数(通常在一个系统开发中都不会使用同名函数)

参数详解

函数的参数分为两种:形参和实参

形参

形参:形式参数,不具有实际意义的参数,是在函数定义时使用的参数

实参

实参:实际参数,具有实际数据意义的参数,是在函数调用时使用的参数

形参是实参的载体:实参在调用时通常是需要传入到函数内部参与计算(运算),那么需要在函数内部去找到实际数据所在的位置才能找到数据本身:需要实际调用的时候,将数据以实参的形式传递给形参:给形参赋值,从而使得函数内部可以用到外部数据。

引用传递

实参在调用时会将值赋值给形参,那么实际上使用的方式就是一种简单的值传递:将实参(如果是变量或者常量或者其他表达式)的结果(值)取出来赋值给形参:形参与外部实际传入的参数本身没有任何关联关系:只是结果一样。

有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫作引用传值。

基本定义语法:

Function 函数名(形参1,&形参2){

//函数体

}

在调用的时候,必须给引用传值的参数位置传入实际参数,而且参数本身必须是变量。(变量才有指向的数据的内存地址)

引用传值注意事项:在传入实参的时候,必须传入变量

函数体

函数体:函数内部(大括号{}里面)的所有代码都称之为函数体

函数体:基本上所有的代码都可以实现

1、 定义变量

2、 定义常量

3、 使用流程控制(分支、循环)

4、 可以调用函数

函数返回值

返回值:return,指的是将函数实现的结果,通过return关键字,返回给函数外部(函数调用处):在PHP中所有的函数都有返回值。(如果没有明确return使用,那么系统默认返回NULL)

注意:函数的返回值可以是任意数据类型

Return关键字:

1、 return在函数内部存在的价值:返回当前函数的结果(当前函数运行结束)

2、 return还可以在文件中直接使用(不在函数里面):代表文件将结果return后面跟的内容,转交给包含当前文件的位置。(通常在系统配置文件中使用较多),在文件中也代表中终止文件后面的代码:return之后的内容不会执行。

作用域

作用域:变量(常量)能够被访问的区域

1、 变量可以在普通代码中定义

2、 变量也可以在函数内部定义

在PHP中作用域严格来说分为两种:但是PHP内部还定义一些在严格意义之外的一种,所以总共算三种:

1、 全局变量:就是用户普通定义的变量(函数外部定义)

所属全局空间:在PHP中只允许在全局空间使用:理论上函数内部不可方法

脚本周期:直到脚本运行结束(最后一行代码执行完)

2、 局部变量:就是在函数内部定义的变量

所属当前函数空间:在PHP中只允许在当前函数自己内部使用

函数周期:函数执行结束(函数是在栈区中开辟独立内存空间运行)

3、 超全局变量:系统定义的变量(预定义变量$SERVER、_POST等)

所属超全局空间:没有访问限制(函数内外都可以访问)

超全局变量会将全局变量自动纳入到GLOBALS,而GLOBALS没有作用域限制,所以能够帮助局部去访问全局变量:但是必须使用数组方式

在PHP中,其实还有一种方式,能够实现全局访问局部,同时局部也可以访问全局:global关键字

Global关键字:是一种在函数里面定义变量的一种方式

1、 如果使用global定义的变量名在外部存在(全局变量),那么系统在函数内部定义的变量直接指向外部全局变量所指向的内存空间(同一个变量);

2、 如果使用global定义的变量名在外部不存在(全局变量),系统会自动在全局空间(外部)定义一个与局部变量同名的全局变量

本质的形式:在函数的内部和外部,对一个同名变量(全局和局部)使用同一块内存地址保存数据,从而实现共同拥有。

基本语法:

Global 变量名; //不能赋值

变量名 = 值; //修改

局部访问全局变量

全局访问局部变量

相关推荐

  1. PHP系列」PHP 函数详解

    2024-03-17 20:12:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-17 20:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-17 20:12:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-17 20:12:01       82 阅读
  4. Python语言-面向对象

    2024-03-17 20:12:01       91 阅读

热门阅读

  1. 我的创作纪念日

    2024-03-17 20:12:01       41 阅读
  2. 静态绑定和动态绑定的介绍?

    2024-03-17 20:12:01       40 阅读
  3. 树莓派 ubuntu 23.10 mantic 换阿里云源

    2024-03-17 20:12:01       41 阅读
  4. Microsoft VBA Excel 提取相同名称的整列数据

    2024-03-17 20:12:01       45 阅读
  5. ./experiment.sh: line 64: python3.6: command not found

    2024-03-17 20:12:01       39 阅读
  6. 435. 无重叠区间

    2024-03-17 20:12:01       42 阅读
  7. CentOS7.9 安装SIPp3.6

    2024-03-17 20:12:01       43 阅读
  8. Activiti7 工作流看这一篇就够了(五、事件)

    2024-03-17 20:12:01       36 阅读
  9. openGauss Sqlines 使用指导

    2024-03-17 20:12:01       37 阅读
  10. 前端小白的学习之路(CSS3 一)

    2024-03-17 20:12:01       64 阅读