У меня просто есть простой вопрос ... Я работал над разработкой приложения для форума для своего сайта и при обновлении некоторых старых методов, которые я использовал (мой старый код ужасно) Я столкнулся - не в первый раз - устройства ООП.Требовать() использовать класс для использования в наследовании
У меня довольно много классов, которые использует моя система, и переопределяя для них одни и те же функции (ы) для них, поэтому я решил создать базовый класс, который будет нести функциональность.
Я пытался использовать require()
на базовый класс, то расширить класс отходящими от него ...
<?php
require(//path to base class);
class User extends BaseClass {
// code
}
?>
Но я не знаю, как проверить, если она есть, и это Безразлично» кажется, т будет наследовать только функцию базового класса ...
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
Так как, когда я пытаюсь получить переменную из класса User (например $user->Username
) она возвращает NULL
. Переменная отмечена как private
в классе, но прежде чем я попытался сделать наследование, это не было проблемой.
Если 'require' не может добавить файл, он все равно остановит сценарий, не так ли? В чем проблема ? Вы не уверены, что BaseClass находится в файле, который вам нужен? – Sugar
Ну, я полагаю, чтобы яснее моя проблема, о чем я упомянул в конце; __get, который я определил в BaseClass, не работает, как это было, когда я просто определил его в User. Я не уверен, что это потому, что он не работает в наследовании, или если что-то не так с наследованием от класса require() 'd. – Splashsky
Я подозреваю, что у вас есть переменная $ Username в вашем BaseClass? Тогда вы должны сделать его защищенным. Частные переменные видны только для действительного класса, защищенные также видны для расширения классов. –