php
函数的参数传递方式在 oop 中可分为两种:按值传递和按引用传递。按值传递复制参数值给方法,修改形式参数不影响实际参数,而按引用传递引用实际参数变量,修改形式参数会修改实际参数的值。按值传递是默认方式,按引用传递可在参数类型前加 & 实现。理解值和引用传递差异在实际中至关重要,比如数组按值传递不会修改实际值,而按引用传递会。
PHP 函数的参数传递方式在 OOP 中的体现
在面向对象编程 (OOP) 中,通过函数的参数可以传递参数给类的方法。PHP 支持两种主要的参数传递方式:
按值传递 (by value)
:在这种方式下,实际参数值被复制并传递给方法内的形式参数。这样,对形式参数所做的任何修改都不会影响实际参数的值。
按引用传递 (by reference)
:在这种方式下,形式参数引用了实际参数变量。这意味着对形式参数所做的任何修改都会反映在实际参数的值上。
按值传递
立即学习
“
PHP免费学习笔记(深入)
”;
按值传递是传递参数的默认方式。以下代码示例展示了按值传递:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
按引用传递
按引用传递通过在参数类型前加上
符号来实现。以下代码示例展示了按引用传递:
实战案例:值和引用传递的差异
在实际项目中,理解值和引用传递之间的差异非常重要。例如,考虑一个将数组作为参数传递给函数并尝试修改它的场景。
在第一个例子中,数组被按值传递,因此
函数中所做的修改不会影响函数外部的实际
数组。而在第二个例子中,数组被按引用传递,所以
函数中所做的修改会反映在实际
数组中。
class MyClass {
function setValue($value) {
$this->value = $value;
}
}
$myObject = new MyClass();
$myObject->setValue(10); // 传递值 10 给形式参数 $value
// 对形式参数的修改不会影响实际参数的值
$myObject->setValue(20);
echo $myObject->value; // 输出 10&class MyClass {
function setValue(&$value) {
$this->value = &$value;
}
}
$myObject = new MyClass();
$value = 10;
$myObject->setValue($value); // 传递引用给形式参数 $value
// 对形式参数的修改会影响实际参数的值
$myObject->setValue(20);
echo $value; // 输出 20// 按值传递
function modifyArray(array $arr) {
$arr[] = 'new_element';
}
$arr = ['a', 'b', 'c'];
modifyArray($arr);
// arr 保持不变// 按引用传递
function modifyArray2(&$arr) {
$arr[] = 'new_element';
}
$arr = ['a', 'b', 'c'];
modifyArray2($arr);
// arr 被修改了modifyArray$arrmodifyArray2$arr