1
<?php
class Test{
    public $test_1, $test_2;
}


$object = new Test();
$object->test_1 = "THIS IS A TEST";
$object->test_2 = "THIS IS A TEST 2";
$object->test_3 = "THIS IS A TEST 3";

var_dump($object);

如您所见,我没有名为 test_3 的变量。但我没有收到错误。它运行良好。为什么?这是我得到的输出。

object(Test)#1 (3) {
  ["test_1"]=>
  string(14) "THIS IS A TEST"
  ["test_2"]=>
  string(16) "THIS IS A TEST 2"
  ["test_3"]=>
  string(16) "THIS IS A TEST 3"
}
4

1 回答 1

4

在 PHP 中,您可以动态创建公共成员变量。如果你想防止这种情况发生,你可以重载__set()魔法方法并在有人试图这样做时抛出异常:

class Test{
    public $test_1, $test_2;

    public function __set($name, $value) {
        throw new \Exception('You cannot do this!');
    }
}
于 2015-04-27T12:54:16.670 回答