othercode/fcontroller

FController 是控制器/模块的容器。

v1.2.0 2016-08-28 12:25 UTC

This package is auto-updated.

Last update: 2024-09-07 00:07:16 UTC


README

Build Status Latest Stable Version License

FController 是控制器/模块的容器。此包允许我们注册多个控制器/模块,可以从公共入口点简单调用它们。同样,我们还可以注册多个库或服务。这些服务或库将在所有模块中可用。

安装

使用 Composer

首先,我们需要将依赖项添加到 composer.json 文件中

"require": {
    "othercode/fcontroller": "*",
}

然后,我们需要运行以下命令

composer update

独立安装

我们需要下载此包,然后提取内容,并在代码中包含 fcontroller/autoload.php 文件。

require_once 'fcontroller/autoload.php';

基本用法

首先,我们必须有 FController 需要处理的模块。例如,我们有两个虚拟模块(类)

namespace OtherCode\Examples;

class DummyOne extends \OtherCode\FController\Modules\BaseModule
{
    public function sayHello($name)
    {
        $this->storage->name = $name;
        
        return "Hello, " . $name . "!";
    }
}

DummyOne 模块有一个名为 sayHello($name) 的方法,该方法接受一个字符串作为参数。此方法返回一个字符串。

namespace OtherCode\Examples;

class DummyTwo extends \OtherCode\FController\Modules\BaseModule
{
    public function sayGoodBye()
    {
        return "GoodBye, " . $this->storage->name . "!";
    }
}

DummyTwo 模块再次只有一个名为 sayGoodBye() 的方法,此方法也返回一个字符串。

让我们创建一个简单的应用程序,其中包含我们的两个模块

namespace OtherCode\Examples;

require_once 'fcontroller/autoload.php';
require_once 'DummyOne.php';
require_once 'DummyTwo.php';

$app = \OtherCode\FController\FController::getInstance();
$app->setModule('dummy1', 'OtherCode\Examples\DummyOne');
$app->setModule('dummy2', 'OtherCode\Examples\DummyTwo');

try {

    $response1 = $app->run("dummy1.sayHello", array('name' => 'Rick'));
    $response2 = $app->run("dummy2.sayGoodBye");

    var_dump($response1, $response2);

} catch (\Exception $e) {

    var_dump($e);
}

上述代码说明了如何使用单个入口点调用两个不同的模块。我们还可以在模块中使用服务。

此包还有一个消息队列,可用于从我们的模块显示信息性消息。