Если у вас есть следующий код:Динамически добавить частные свойства объекта
<?php
class Foo { public $attribute; }
$o = new Foo();
$o->bar = true;
?>
PHP автоматически создает динамичную общественную собственность к этому объекту.
Есть ли возможность добавить динамические частные свойства? Или настроить их для приватного во время выполнения с помощью Reflection?
Мой метод __set
нужно вызывать каждый раз, когда кто-то пытается установить какой-либо атрибут в моем классе. Я могу настроить все свои атрибуты на личную, но у меня есть атрибуты, которые динамически добавляются в этот класс, и когда атрибут добавляется автоматически, он имеет общедоступную видимость.
Это предотвращает вызов метода __set
. Как я могу сделать динамические свойства при вызове значения __set
?
На самом деле существует метод класса ReflectionProperty с именем setAccessible(). Я бы сделал противоположное этому методу.
Короткий ответ, нет. Длинный ответ, возможно, вы сможете использовать отражение, чтобы изменить область действия свойства. Но отражение не должно использоваться так, как если бы вы не проводили отладку или модульное тестирование. –
Какого черта вы пытаетесь сделать в любом случае? –
@FabienWarniez только что добавил реальную информацию к вопросу. –