我可以在PHP中更改函数中的局部变量的值吗?

我可以在PHP中更改函数中的局部变量的值吗?,php,Php,我读了一篇关于PHP中数据封装的文章,作者的解释让我怀疑这是否真的可行?这是他说的 封装的主要目的 (范围)是为了确保您编写 无法破解的代码。这 适用于一般范围,所以让我 使用一个更简单的本地 函数中的变量: 函数xyz($x){ $y=1; 在本例中,$y不能更改任何变量,因为它们都在函数内部声明 但是,如果你有一个带有公共类变量的类,如果你愿意的话,你可以在类之外更改它。(这是一种糟糕的形式,可能会把很多事情搞砸。)除非你添加一个神奇的setter方法(u set($key,$value))

我读了一篇关于PHP中数据封装的文章,作者的解释让我怀疑这是否真的可行?这是他说的

封装的主要目的 (范围)是为了确保您编写 无法破解的代码。这 适用于一般范围,所以让我 使用一个更简单的本地 函数中的变量:

函数xyz($x){
$y=1;

在本例中,$y不能更改任何变量,因为它们都在函数内部声明


但是,如果你有一个带有公共类变量的类,如果你愿意的话,你可以在类之外更改它。(这是一种糟糕的形式,可能会把很多事情搞砸。)

除非你添加一个神奇的setter方法(u set($key,$value)),并将其配置为可以访问该内部成员,然后是否。如果使用某种形式的factory,则可以在创建函数时更改密钥,但如果尚未将其公开,则没有其他方法


唯一可见的例外是singleton工厂:您可以使用不同的参数创建singleton方法的新实例(在其他地方更改它),但我怀疑你是否有可能用一种方法做到这一点。

不,你不能,这正是引用的文本所说的。如果你能做到,它很可能会破坏代码:“你不能再保证该函数返回什么。”啊,我明白了。这对类方法和属性来说是有意义的。这与类无关(至少与他的示例无关)。即使是这样,在方法内部声明的局部变量也不能从外部访问,没有例外。我确实使用魔法方法_set和_get,它限制外部的所有人修改和访问任何值。我确实理解如何限制对类方法和属性的直接访问,这里我指的是一般的函数。不是关于类方法或属性。仍然感谢您的解释,我非常感谢:)
function xyz ($x) {
  $y = 1;
  while ($y <= 10) {
    $array[] = $y * $x;
    $y++;
  }
  return $array;
}