2016-12-02 122 views
0

我得到这个错误与ATK 9 frameworkPHP错误调用一个抽象类

App\Modules\Auth\Module包含1种抽象方法,因此必须声明为抽象或实现其余的方法

调用下面的类:

abstract class Module 
{ 
public static $module; 

/** @var Atk $atk */ 
private $atk; 

/** @var Menu $menu */ 
private $menu; 

public function __construct(Atk $atk, Menu $menu) 
{ 
    $this->atk = $atk; 
    $this->menu = $menu; 
} 

protected function getMenu() 
{ 
    return $this->menu; 
} 

protected function getAtk() 
{ 
    return $this->atk; 
} 

abstract public function register(); 

public function boot() 
{ 
    //noop 
} 

public function registerNode($nodeName, $nodeClass, $actions = null) 
{ 
    $this->atk->registerNode(static::$module.'.'.$nodeName, $nodeClass, $actions); 
} 

public function addNodeToMenu($menuName, $nodeName, $action, $parent = 'main', $enable = null, $order = 0, $navbar = 'left') 
{ 
    if ($enable === null) { 
     $enable = [static::$module.'.'.$nodeName, $action]; 
    } 
    $this->menu->addMenuItem($menuName, Tools::dispatch_url(static::$module.'.'.$nodeName, $action), $parent, $enable, $order, static::$module, '', $navbar); 
} 

public function addMenuItem($name = '', $url = '', $parent = 'main', $enable = 1) 
{ 
    $this->menu->addMenuItem($name, $url, $parent, $enable, 0, static::$module); 
} 
} 

这是我用来调用类的代码模块:

class Module extends \Sintattica\Atk\Core\Module 
{ 
static $module = 'auth'; 

public function boot() 
{ 
    $this->registerNode('users', Users::class, ['admin', 'add', 'edit', 'delete']); 
    $this->registerNode('groups', Groups::class, ['admin', 'add', 'edit', 'delete']); 
    $this->registerNode('users_groups', UsersGroups::class); 

    $this->addMenuItem('auth'); 
    $this->addNodeToMenu('users', 'users', 'admin', 'auth'); 
    $this->addNodeToMenu('groups', 'groups', 'admin', 'auth'); 
} 
} 

感谢

+3

不是'class App \ Modules \ Auth \ Module包含1个抽象方法,因此必须声明为抽象或实现其余方法'足够清楚了吗?你必须实现'register'方法。 – Federkun

+0

[如何使用PHP抽象?](http://stackoverflow.com/questions/7243175/how-to-work-with-php-abstract)可能的重复 –

回答

0

,你必须在你的客户Module类从\Sintattica\Atk\Core\Module类实现register方法。

当延伸的抽象类,ALL抽象方法MUST在客户机(子类)码来实现。