Почему вызов статических методов из родственных классов не работает без создания экземпляров?

У меня есть общий родитель вещь класс для элементов базы данных, например

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-, и это работает отлично.

1

Решение

Если вы хотите использовать статические методы, вы должны также объявить ваши методы как:

protected static function set($i = '') {

protected static function get($id = '') {

Так что вы можете позвонить self::set(...) а также self::get(...),

Если вы хотите использовать нестатические методы, вам нужно только изменить

self::set(...)

в

$this->set(...)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]