簡體   English   中英

我可以更改 PHP 中 function 內的局部變量的值嗎?

[英]Can i change the value of local variable sitting inside the function in PHP?

我正在閱讀PHP中關於數據封裝的文章,作者的解釋讓我懷疑這是否真的可能? 這就是他所說的。

封裝(范圍)的主要目的是確保您編寫的代碼不會被破壞。 這通常適用於 scope,所以讓我使用 function 中的局部變量的更簡單示例:

function xyz ($x) {
  $y = 1;
  while ($y <= 10) {
    $array[] = $y * $x;
    $y++;
  }
  return $array;
}

這個 function 的目的是傳遞一個數字並返回一個數組。 示例代碼非常基本。 為了使 function xyz() 可靠,您需要保證它每次都執行完全相同的操作。 那么,如果有人能夠從外部更改 $y 或 $array 的初始值呢? 甚至$x? 如果您能夠從 function 外部執行此操作,則您無法再保證 function 將返回什么。

現在這讓我想知道我真的可以在不使用上面演示的任何參數的情況下更改 function 內的局部變量的值嗎? 如果可能的話,我該怎么做?

謝謝你..

對於此示例,您將無法更改任何變量,因為它們都在 function 內部聲明。

但是,如果您有一個帶有公共 class 變量的 class,如果您願意,可以在 class 之外更改它。 (不過,這種形式很糟糕,可能會搞砸很多事情。)

除非您添加一個神奇的 setter 方法( __set($key,$value) ),並以您可以訪問該內部成員的方式對其進行配置,否則不會。 如果您使用某種形式的工廠,您可以在制作 function 時更改密鑰,但如果您尚未公開,則沒有其他方法。

唯一可見的例外是 singleton 工廠:您可以使用不同的參數(在其他任何地方更改它)創建 singleton 方法的新實例,但我懷疑您可能會使用方法來做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM