PHP8中自定义函数-PHP8知识详解

1、什么是函数?函数,在英文中的单词是function,这个词语有功能的意思,也就是说,使用函数就是在编程的过程中,实现一定的功能。即函数就是实现一定功能的一段特定代码。在前面

1、什么是函数

函数,在英文中的单词是function,这个词语有功能的意思,也就是说,使用函数就是在编程的过程中,实现一定的功能。即函数就是实现一定功能的一段特定代码。

在前面的教学中,我们已经学习到了函数的使用了,比如,使用define()函数定义一个常量。在这里我们来讲解自定义函数

任何有效的 php 代码都有可能出现在函数内部,甚至包括其它函数和 类 定义。

函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。

PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。

PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。


2、什么是自定义函数?

自定义函数是一种在编程中创建的用户自定义的功能代码块。它们允许程序员定义自己的函数,并根据需要在程序中调用它们。自定义函数可以接收参数,执行特定的任务,并返回一个值。

通过使用自定义函数,程序员可以将复杂的任务分解为更小的可重用代码块,提高代码的可读性和可维护性。自定义函数是编程中常用的概念,几乎在所有的编程语言中都有支持。在PHP8中也不例外。

3、定义和调用函数

一般情况下,程序员面对的是自定义函数。其语法结构如下:

function 函数名称(参数1,参数2,……){
  函数的具体内容;
}

函数定义完成以后,即可调用这个函数。调用函数的操作比较简单,直接引用函数名并赋予正确的参数,即可完成函数的调用。

<?php

// 定义一个函数
function myfun($a, $b) {
    $sum = $a + $b;
    $product = $a * $b;
    
    // 返回求和和求积的结果作为数组
    return array($sum, $product);
}

// 调用myfun()函数并输出结果
$results = myfun(10, 20);
echo "求和计算结果是: " . $results[0] . "<br>";
echo "求积的计算结果是: " . $results[1];

?>

以上代码在PHP8中的运行结果为:

求和计算结果是: 30
求积的计算结果是: 200

4、函数中的变量作用域

所谓 变量作用域,是指特定变量在代码中可以被访问到的位置。在PHP8中,有6种基本变量作用域法则:

一、内置超全局变量。在代码中任意位置都能访问的变量。

二、常数。一旦声明,他就是全局性的,可以在函数的内外使用。

三、全局变量。在代码声明中,可以爱代码中访问,但是不能在函数内部访问。

四、在函数中声明为全局变量的变量。就是同名的全局变量。

五、在函数中创建和声明为静态变量的变量。该变量在函数外是无法访问的,但是这个静态变量的值是可以保留的。

六、在函数中创建和声明的局部变量。在函数外是无法访问的,并且在本函数终止时终止并推出。

4.1、超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

$GLOBALS:它是一个包含了当前脚本中所有全局变量的数组。

$_SERVER:它是一个包含了服务器和执行环境信息的数组,如 HTTP 请求头、路径等。

$_GET:它是一个包含通过 GET 方法传递给当前脚本的参数和值的数组。

$_POST:它是一个包含通过 POST 方法传递给当前脚本的参数和值的数组。

$_FILES:它是一个包含上传文件的相关信息的数组,包括文件名、类型、大小等。

$_COOKIE:它是一个包含客户端发送的 Cookie 的相关信息的数组。

$_SESSION:它是一个包含用户会话数据的数组,用于存储特定用户在不同页面之间共享的数据。

$_REQUEST:它是一个包含了通过 HTTP 请求方法(GET、POST和COOKIES)传递给当前脚本的参数和值的数组。

$_ENV:它是一个包含环境变量的数组,这些变量是由操作系统或 web 服务器设置的。

请注意,对这些超全局变量进行直接引用可能存在安全性和可靠性问题。在使用时,请确保验证和过滤来自用户的输入以防止潜在的安全漏洞。

4.2、全局变量

全局变量就是在函数外声明的变量,在代码中可以访问,但是在函数内部是不能访问的。这是因为函数默认就不能访问起外部的全局变量。

函数内访问全局变量示范代码:

<?php
$a = "PHP";  //定义全局变量
function xuexi() {           // 定义一个函数
echo "正在学习的是: " .$a;   //函数内调用全局变量
}
xuexi();    //运行函数
?>

在PHP8中运行的结果为:

Warning: Undefined variable $a in D:\phpenv\www\localhost\test.php on line 4
正在学习的是:

上面内容明显是异常信息,如果想让函数访问某个全局变量,可以在函数中使用global关键字来声明。

使用global关键字访问全局变量,示例代码:

<?php
$a = "PHP";  //定义全局变量
function xuexi() {           // 定义一个函数
global $a;                   //函数内声明全局变量
echo "正在学习的是: " .$a;   //函数内调用全局变量
}
xuexi();    //运行函数
?>

在PHP8中运行的结果为:

正在学习的是: PHP

也可以使用超全局变量中的$GLOBALS数组进行访问。

使用$GLOBALS数组进行访问全局变量,示范代码:

<?php
$a = "PHP8";  //定义全局变量
function xuexi() {           // 定义一个函数
$a = $GLOBALS["a"];          //通过$GLOBALS数组访问全局变量
echo "正在学习的是: " .$a;   //函数内调用全局变量
}
xuexi();    //运行函数
?>

在PHP8中运行的结果为:

正在学习的是: PHP8

3、静态变量

静态变量只是在函数内存在,函数外无法访问。但是执行以后,其值会保留。

也就是说,这一次执行完毕以后,这个静态变量的值保留,下一次执行此函数,这个值还可以调用。

当在 PHP 8 中使用静态变量时,您可以在函数内部声明一个变量,并在后续的调用中保持其值不变。这样做可以在多次函数调用之间共享数据。

以下是一个示例代码:

<?php
function increment() {
    static $counter = 0;
    $counter++;
    echo "Counter value: " . $counter . "<br>";
}

increment(); 
increment(); 
increment(); 
?>

以上代码在PHP8中运行的结果为:

Counter value: 1
Counter value: 2
Counter value: 3

在上面的代码中,我们定义了一个名为 $counter 的静态变量,并初始化为 0。每当 increment() 函数被调用时,该变量都会自增并输出当前计数器的值。

由于 $counter 是一个静态变量,在函数调用之间它的值得以保持和共享。因此,每次调用 increment() 都会使计数器递增。

space

本文地址:https://www.566155.com/36.html

猜你喜欢

PHP8的继承和多态-PHP8知识详解

导读:我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。 集成和多态的根本作用就是完成代码的重用。下面就来讲解PHP8的继承和多态。

2023-09-27  分类:PHP  浏览:1062次


PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解

导读:对象不仅可以调用自己的变量和方法,也可以调用类中的变量和方法。php8通过伪变量“$this->”和操作符“::”来实现这些功能。

2023-09-27  分类:PHP  浏览:775次


PHP8中的构造方法和析构方法-PHP8知识详解

导读:今日分享的内容是PHP8中的构造方法和析构方法,我们把构造方法和析构方法这两个方法分开来讲:

2023-09-27  分类:PHP  浏览:647次


PHP8的类与对象的基本操作之类常量-PHP8知识详解

导读:PHP 8引入了一种新的特性,称为类常量(Class Constants)。类常量是在类中定义的常量,类似于全局常量,但作用域仅限于定义它们的类。 在PHP 8中,类常量的作用域被限制在定义它们的类中。这意味着只有类的成员方法或静态方法才能访问类常量。在其他上下文中,如类的实例方法或全局范围内,类常量将不可见。

2023-09-27  分类:PHP  浏览:669次


PHP8的类与对象的基本操作之成员变量-PHP8知识详解

导读:成员变量是指在类中定义的变量。在类中可以声明多个变量,所以对象中可以存在多个成员变量,每个变量将存储不同的对象属性信息。

2023-09-27  分类:PHP  浏览:651次


PHP8的类与对象的基本操作之类的实例化-PHP8知识详解

导读:定义完类和方法后,并不是真正创建一个对象。类和对象可以描述为如下关系。类用来描述具有相同数据结构和特征的“一组对象”,“类”是“对象”的抽象,而“对象”是“类”的具体实例,即一个类中的对象具有相同的“型”,但其中每个对象却具有各不相同的“值”。

2023-09-27  分类:PHP  浏览:648次


PHP8的类与对象的基本操作之成员方法-PHP8知识详解

导读:成员方法是指在类中声明的函数。在类中可以声明多个函数,所以对象中可以存在多个成员方法。类的成员方法可以通过关键字进行修饰,从而控制成员方法的商用权限。

2023-09-27  分类:PHP  浏览:667次


PHP8的类与对象的基本操作之定义类-PHP8知识详解

导读:在PHP8中,定义类的关键字是class,定义类的语法格式如下: 其中,修饰符是可选项,常见的修饰符包括public、private和protected。

2023-09-27  分类:PHP  浏览:690次


认识面向对象-PHP8知识详解

导读:面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。

2023-09-27  分类:PHP  浏览:652次


PHP8中调换数组中的键值和元素值-PHP8知识详解

导读:在PHP8中使用array_flip()函数可以调换数组中的键值和元素值。

2023-09-27  分类:PHP  浏览:613次