<?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 вы можете создавать публичные переменные-члены на лету. Если вы хотите предотвратить это, вы можете перегрузить __set()
магический метод и выбросить исключение, если кто-то пытается сделать это:
class Test{
public $test_1, $test_2;
public function __set($name, $value) {
throw new \Exception('You cannot do this!');
}
}
Других решений пока нет …