【问题标题】:Non-static method should not be called statically in Kohana 2.3.4在 Kohana 2.3.4 中不应静态调用非静态方法
【发布时间】:2020-02-27 19:25:55
【问题描述】:

我已将我的 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】:

    错误彼此不相关。只需将该方法设置为静态,php 就会显示下一个错误。

    你有错误的Menu_Model 声明。它必须与ORM_Core::validate兼容

    Menu_Model::validate(/*bad: array & */ Validation $array, $save = false)
    

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多