【问题标题】:Even though I don't have a this variable, when I am accessing it, I am not getting an error即使我没有这个变量,当我访问它时,我也没有收到错误
【发布时间】:2015-04-27 12:49:50
【问题描述】:
<?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"
}

【问题讨论】:

  • 您可以在 PHP 中动态创建成员变量
  • 您设置了一个新变量。在这个社区问问题...
  • @JohnConde,有什么办法可以限制吗?
  • 是的。您可以覆盖 __set() 魔术方法并使其出错。让我看看能不能举个例子。
  • @eddard.stark John 在下面为您发布了答案。

标签: php class class-members


【解决方案1】:

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

class Test{
    public $test_1, $test_2;

    public function __set($name, $value) {
        throw new \Exception('You cannot do this!');
    }
}

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 2021-07-08
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多