Я создаю глобальные сеттеры и получатели для моего родительского класса, так как я не хочу создавать их для каждой переменной дочернего класса (но иногда я буду перезаписывать родительский глобальный сеттер/getter).Проверка наличия переменной для дочернего класса
Я использую __call с ним, и я разбором имя метода, как это:
if (strtolower(substr($method, 0, 3)) == "set") {
$variable = strtolower(substr($method, 3));
}
Вопрос заключается в том, как я могу проверить, если переменные $ устанавливаются для дочернего класса (тот, который расширяет основной);
Если я:
if ($this->$variable)
Я полагаю, что в первую очередь проверьте, если он существует в дочернем классе, а затем проверяет, если он существует в основном классе. Я хочу, чтобы это только для проверки дочернего класса, возможно ли это сделать?
Я знаю, что есть родитель :: но есть ли у ребенка эквивалент?
EDIT: Люди не понимают, о чем я прошу. Я знаю, как проверить, существует ли свойство. Я хочу знать, как проверить, существует ли свойство для класса CHILD, а не для класса MAIN. (класс РЕБЕНОК распространяется MAIN)
Может быть, я «Я пропустил что-то, но я не понимаю, почему вы используете подход« __call ». Если ваш код правильно ориентирован на объект, вам не нужно прибегать к такому экзотическому решению. – Bart
У меня есть сотни свойств, и я не хочу заполнять свои классы: setThis, setThat, setThose, setThem (и то же самое для get). Я только хочу создать эти функции, когда они делают что-то еще, чем задают или получают данные (например, дезинфекция). – unska
Эта проблема может быть решена с помощью одного абстрактного класса, от которого наследуются другие классы. Другое преимущество заключается в том, что контракт становится ясным. С '__call' все становится волшебством. – Bart