mad-tools/slim-controller

此包的最新版本(1.1.0)没有可用的许可信息。

1.1.0 2014-08-18 13:46 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:57:45 UTC


README

组件集合,允许在 Slim 中完全使用控制器。存在某种类似 HMVC 的结构,因为可以在模块内部调用模块,等等。这允许在其它动作中使用特定动作的方法。

如何使用

初始化

$slim = new \Slim\Slim();
$app = new \SlimController\Controller($slim);

$app->add_command('/set/:aaa/', "main::main");

$app->add_route('/test/:a/:b/', function($a, $b) { var_dump($a, $b); });
$app->add_route('/', 'main::index');

/**
 * Формирование модуля
 * По сути, тут и определяется как и где лежат модули
 */
$app->registerModuleDispatcherCallback(function($module_name, $controller) {
	$class_name = sprintf('\Modules\%s\Module%s', ucfirst($module_name), ucfirst($module_name));
	return new $class_name($controller);
});


// запуск приложения
// определение консольный запуск или же из под апача
$mode = (!isset($_SERVER['HTTP_HOST'])) ?
	\SlimController\Controller::MODE_CLI :
	\SlimController\Controller::MODE_WEB;

$app->run($mode);

使用

现在,在模块内部已经可以使用 动作(也称为 行为)。更详细的例子可以在 examples 文件夹中查看。这里讨论基本动作。

// запуск метода конкретного экшена
$this->createAction('action-name')->someMethod();

// создание саб-экшена
$this->createAction('action-name')->createAction('another-action');

// дергает другой модуль и действие в нем
$this->getController()->createModule('module-name')->createAction('action-name');

提供控制台路由和 Web 路由。控制台路由基于 Slim 路由器 {via('CONSOLE')} 构建,这允许它们在 Web 路由遍历时被忽略,反之亦然,在从控制台启动时被考虑。

安装

{
    "require": {
        "mad-tools/slim-controller": "dev-master"
    }
}