php - 为什么在没有实例化的情况下从兄弟类调用静态方法不起作用?

时间:2015-09-07 08:50:55

标签: php class static parent siblings

我有一个用于数据库元素的通用父 item 类,比如

HTTP_HOST

当我在用户内部调用类方事件的set方法时,我有不同的类实现项目的父级,如用户事件,例如

class item {
    function set($i = '') {
        //set element in database
    }

    function get($id = '') {
        //get element in database
        return $item;
    }
}

就好像我写了

class users extends item {
    function dothis() {
        events::set(array('start' => 'today', 'end' => 'tomorrow'));
    }
}

尝试在users表中插入事件,所以我必须以这种方式实例化该类

class users extends item {
    function dothis() {
        self::set(array('start' => 'today', 'end' => 'tomorrow'));
    }

}

我做错了吗?有没有办法避免实例化?

编辑 - 我的框架中的所有类都是以静态方式调用的,无需 new $ this ,并且它运行良好。

1 个答案:

答案 0 :(得分:1)

如果你想使用静态方法,你也应该声明你的方法:

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

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

因此,您可以致电self::set(...)self::get(...)

如果您想使用非静态方法,您只需要更改

self::set(...)

$this->set(...)