[英]Variable scope in php for a reference return?
可變范圍(如定義在這里 )
變量的范圍是定義它的上下文。 在大多數情況下,所有PHP變量只有一個范圍。 此單一范圍也涵蓋包含和所需文件。
//a.php
<?php
class a {
function &func () {
$avar = array("one", "two", "three");
return $avar;
}
?>
__
//b.php
<?php
class b {
include("a.php");
$ainstance = new a;
var_dump($ainstance->func());
}
?>
上面的代碼將按預期轉儲有關變量的信息(我的意思是WRT函數func
形成的結構)。
我懷疑的是,
PHP中的所有變量都是zval*
,即C指針。
如果按值返回,在大多數情況下,PHP將自動復制zval*
並返回該值。 如果通過引用返回,PHP將返回原始zval*
。 在這些情況下,返回的zval*
refcount都不會達到0。
在C方面,當你返回一個變量時,它會返回一個指向zval
的指針,這是一個包含變量信息的C結構(即type,value, is_ref
和is_ref
標志)。
因為它是一個指針,它實際上並沒有返回一個本地C變量,而是一個預先分配的zval
指針,它指向實際zval
的位置。 除非zval*
refcount達到0(即:不存儲返回值),否則該變量仍將存在直到程序結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.