Правильно ли что свойство объекта создается динамически без реализации функции __set()

gertherthert

Новичок
Правильно ли что такой пример работает без ошибок?

class Exam
{

}

$e = new Exam();
$e->ddd = 45234;
echo $e->ddd;
 

gertherthert

Новичок
если добавить в класс пустой метод __set() то будет вылетать ошибка что $ddd не объявлена.
а нельзя ли как-то глобально запретить создание свойств класса которые в нем не описаны?
 

fixxxer

К.О.
Партнер клуба
От такого лечения и скопытиться недолго. :) Общий базовый класс для всего - это заранее заложенная бомба: довольно велик соблазн туда всякого надобавлять.

В php 5.4 можно сделать красиво
PHP:
trait strict {
    public function __get($key) {
        throw new Exception('Attempt to read undefined property $'.$key.' of '.get_class($this).' class');
    }

    public function __set($key, $value) {
        throw new Exception('Attempt to set value to undefined property $'.$key.' of '.get_class($this).' class');
    }
}

class Foo {
    use strict;
    // ...
}
 

gertherthert

Новичок
От такого лечения и скопытиться недолго. :) Общий базовый класс для всего - это заранее заложенная бомба: довольно велик соблазн туда всякого надобавлять.

В php 5.4 можно сделать красиво
PHP:
trait strict {
    public function __get($key) {
        throw new Exception('Attempt to read undefined property $'.$key.' of '.get_class($this).' class');
    }

    public function __set($key, $value) {
        throw new Exception('Attempt to set value to undefined property $'.$key.' of '.get_class($this).' class');
    }
}

class Foo {
    use strict;
    // ...
}
Спасибо.)
 
Сверху