PHP 函数
PHP 函数
Section titled “PHP 函数”函数(Functions)是可重用的代码块,用于执行特定的任务。PHP 内置了超过 1000 个函数库,你也可以定义自己的自定义函数。
使用函数有助于组织代码,提高可读性,减少重复(遵循 DRY - Don’t Repeat Yourself - 原则),并提高可维护性。
定义自定义函数
Section titled “定义自定义函数”使用 function 关键字定义函数,后跟函数名称、圆括号 () 和代码块 {}。
语法:
<?phpdeclare(strict_types=1); // 可选:强制严格类型检查
function functionName(parameters) { // 要执行的代码 // 可选:返回值;}?>命名约定:
- 函数名必须以字母或下划线 (
_) 开头,后跟字母、数字或下划线。 - 函数名不区分大小写,但建议始终保持一致的调用方式(例如,按照定义时的方式)。
- 选择具有描述性的名称,表明函数的作用(例如,
calculateTotal,getUserById,formatDate)。常见的命名风格包括camelCase(如calculateTotal)或snake_case(如get_user_id)。
函数定义并不会立即执行其内部的代码。你需要调用函数来运行其代码。
示例:简单的函数定义与调用
<?php// 定义函数function displayWelcomeMessage() { echo "Hello! Welcome to our website.<br>";}
// 调用函数displayWelcomeMessage();// 输出:Hello! Welcome to our website.<br>displayWelcomeMessage(); // 再次调用// 输出:Hello! Welcome to our website.<br>?>函数参数 (Arguments / Parameters)
Section titled “函数参数 (Arguments / Parameters)”函数可以接受输入值,这些值称为实参 (arguments)(或函数定义中的形参 (parameters))。实参/形参列在函数定义时的圆括号内,并在函数内部像局部变量一样起作用。
<?phpfunction greetUser(string $name) { // $name 是一个带有类型提示(type hint)的形参 echo "Hello, " . htmlspecialchars($name) . "!<br>";}
greetUser("Alice"); // "Alice" 是传递给函数的实参// 输出:Hello, Alice!<br>greetUser("Bob");// 输出:Hello, Bob!<br>?>**多个参数:**用逗号分隔。
<?phpfunction printUserInfo(string $name, int $age) { echo htmlspecialchars($name) . " is " . $age . " years old.<br>";}
printUserInfo("Charlie", 30);// 输出:Charlie is 30 years old.<br>?>类型提示 (Type Hinting)(推荐):
现代 PHP 强烈建议对函数参数(以及返回值类型)使用类型提示 (type hinting)。这能提高代码的清晰度,有助于尽早捕获错误,并改善开发工具的支持。
<?phpdeclare(strict_types=1); // 启用严格类型检查
function addNumbers(int $a, int $b) { echo $a + $b;}
addNumbers(5, 10); // 输出:15// addNumbers("5", "10"); // 如果 strict_types=1,这将导致 TypeError?>你可以为参数提供默认值。如果在调用函数时没有传递该特定参数,将使用默认值。
<?phpfunction setPowerLevel(int $level = 9000) { // 默认等级为 9000 echo "The power level is: $level<br>";}
setPowerLevel(15000); // 输出:The power level is: 15000<br>setPowerLevel(); // 输出:The power level is: 9000<br>?>注意:在函数定义中,带有默认值的参数通常应该放在没有默认值的参数之后。
函数可以使用 return 语句将值发送回调用它的代码。当 return 执行时,函数会立即停止运行并返回指定的值。
**返回值类型提示:**你可以在(也应该)在圆括号后使用 : 类型 来指定返回值的预期类型。
<?phpdeclare(strict_types=1);
function sum(int $x, int $y): int { // 声明它返回一个整数 $result = $x + $y; return $result; // return 后面的代码不会执行}
$total = sum(5, 10);echo "5 + 10 = " . $total . "<br>"; // 输出:5 + 10 = 15<br>
echo "7 + 13 = " . sum(7, 13) . "<br>"; // 输出:7 + 13 = 20<br>
function formatGreeting(string $name): string { if (empty($name)) { return "Hello there!"; // 可以提前返回 } return "Hello, " . htmlspecialchars($name) . "!";}
echo formatGreeting("Dana") . "<br>"; // 输出:Hello, Dana!<br>echo formatGreeting("") . "<br>"; // 输出:Hello there!<br>?>如果一个函数没有 return 语句,或者使用不带值的 return;,它会隐式地返回 null。
变量作用域 (Scope)
Section titled “变量作用域 (Scope)”默认情况下,在函数内部定义的变量对于该函数来说是局部的 (local)。它们不能在函数外部访问。同样,在函数外部定义的变量也无法直接在函数内部访问,除非作为参数显式传递或声明为 global(通常不鼓励使用 global;更推荐传递参数)。
更多函数概念(简要介绍)
Section titled “更多函数概念(简要介绍)”- **可变长度参数列表 (
...):**允许函数接受任意数量的参数(例如,function sum(...$numbers): int)。 - **匿名函数 (Anonymous Functions / Closures):**没有指定名称的函数,常用于回调或赋值给变量。
- **箭头函数 (Arrow Functions) (
fn() => ...):**用于简单匿名函数的简洁语法(PHP 7.4 引入)。
这些高级概念为特定的编程模式提供了更大的灵活性。