首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 返回引用類型完整指南:定義、調用與版本差異

     編輯:PHP 綜合知識

語法規則

返回引用時,函數定義與調用處都必須加 & 符號,不可省略:

function &getRef() { ... }
$var = &getRef();

基本行為演示

<?php
$color = 'YellowGreen';

function &getRef() {
    global $color;
    return $color;
}

function getCopy() {
    global $color;
    return $color;
}

$colorRef = &getRef();
$colorRef = 'Blue';

// $colorCopy = getCopy();
// $colorCopy = 'Black';

var_dump($color);    // string(4) "Blue"
var_dump($colorRef); // string(4) "Blue"
// var_dump($colorCopy);
?>

$colorRef 與 $color 綁定同一記憶體位址,修改任一者另一者同步變化。

物件在 PHP 4/5 中的差異

版本getCopy() 返回&getRef() 返回
PHP 4物件複製引用
PHP 5.0 ~ 5.1.x引用(視具體版本)引用
PHP 5.2+物件複製引用

關鍵點:PHP 5 起物件預設傳遞「物件標識符」(類似引用),但 getCopy() 仍會複製標識符,而 &getRef() 綁定變量容器本身。

類成員方法中的情況

放入類內部時,行為更為複雜,建議查閱官方手冊 語言.引用 章節。

效能迷思

返回引用不會提高效能,某些情況反而降低效能。切勿為了「優化」而濫用此特性。

適用場景

  • 需要直接修改函數內部靜態/全局變量
  • 實現鏈式操作的內部狀態修改
  • 極少數底層庫開發需求

一般業務代碼強烈建議避免使用,除非你完全理解其語義與副作用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved