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



我已经将我的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函数设置为static,我会得到以下错误:

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将显示下一个错误。

您有错误的Menu_Model声明。它可以与ORM_Core::validate兼容

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

最新更新