0
我得到这个错误与ATK 9 framework
PHP错误调用一个抽象类
类
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');
}
}
感谢
不是'class App \ Modules \ Auth \ Module包含1个抽象方法,因此必须声明为抽象或实现其余方法'足够清楚了吗?你必须实现'register'方法。 – Federkun
[如何使用PHP抽象?](http://stackoverflow.com/questions/7243175/how-to-work-with-php-abstract)可能的重复 –