2016-12-02 3 views
0

я получаю эту ошибку с классом App\Modules\Auth\ModuleATK 9 frameworkPHP ошибка при вызове абстрактный класс

содержит 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

Вы должны реализовать register метод из класса \Sintattica\Atk\Core\Module в вашем ClientModule класса.

При расширении абстрактный класс, ВСЕ Абстрактные методы MUST быть реализован в клиенте (дочерний класс) код.

Смежные вопросы