У меня есть общий родитель вещь класс для элементов базы данных, например
class item {
function set($i = '') {
//set element in database
}
function get($id = '') {
//get element in database
return $item;
}
}
У меня есть разные классы, реализующие родительский элемент, как пользователи а также События — когда я вызываю метод set внутри пользователей для событий класса, например
class users extends item {
function dothis() {
events::set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
это действует так, как будто я написал
class users extends item {
function dothis() {
self::set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
пытаясь вставить событие в таблицу пользователей, поэтому я должен создать экземпляр класса таким образом
class users extends item {
function dothis() {
$e = new events();
$e->set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
Я делаю что-то не так? Есть ли способ избежать инстанцирования?
РЕДАКТИРОВАТЬ — Все классы в моей структуре называются статическим способом, без необходимости новый или же $ this-, и это работает отлично.
Если вы хотите использовать статические методы, вы должны также объявить ваши методы как:
protected static function set($i = '') {
protected static function get($id = '') {
Так что вы можете позвонить self::set(...)
а также self::get(...)
,
Если вы хотите использовать нестатические методы, вам нужно только изменить
self::set(...)
в
$this->set(...)
Других решений пока нет …