在Kohana 2.3.4中不应静态调用非静态方法

问题描述 投票:0回答:1

我已经将我的Kohana 2.3.4安装转移到了使用php7的新主机(可能是问题的根源,现在我遇到了以下错误:

Uncaught PHP Error: Non-static method AdminHook::menu_tree() should not be called statically in file system/core/Event.php on line 209

这是我在第209行附近的Event.php(call_user_func($ callback);在第209行):

public static function run($name, & $data = NULL)
{
    if ( ! empty(self::$events[$name]))
    {
        // So callbacks can access Event::$data
        self::$data =& $data;
        $callbacks  =  self::get($name);

        foreach ($callbacks as $callback)
        {
            call_user_func($callback); // LINE 209
        }

        // Do this to prevent data from getting 'stuck'
        $clear_data = '';
        self::$data =& $clear_data;
    }

    // The event has been run!
    self::$has_run[$name] = $name;
}

这是AdminHook类:

class AdminHook {
    public function menu_tree(){
        $session = Session::instance();
        if(isset($_GET['_ml']) AND $_GET['_ml'] == 1) {
            $session->set('menuLink', 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
            //url::redirect(url::current());
        }
        global $menuLink;
        $menuLink = $session->get('menuLink');
    }
}

如果我将menu_tree函数设置为静态,则会出现以下错误:

Uncaught PHP Error: Declaration of Menu_Model::validate(array &$array, $save = false) should be compatible with ORM_Core::validate(Validation $array, $save = false) in file application/models/menu.php on line 18

我一直在努力寻找接下来几天的解决方案,但似乎找不到。非常感谢您的帮助!

php static kohana
1个回答
0
投票

错误彼此无关。通过简单地将该方法设置为静态,php会显示下一个错误。

您的Menu_Model声明不正确。它可以与ORM_Core::validate

兼容
Menu_Model::validate(/*bad: array & */ Validation $array, $save = false)
© www.soinside.com 2019 - 2024. All rights reserved.