rangelreale/yii2-nithrift

Thrift server application using Yii2

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 3

Forks: 0

Open Issues: 0

Type:yii2-extension

dev-master 2016-01-14 13:57 UTC

This package is not auto-updated.

Last update: 2024-11-13 20:02:58 UTC


README

Thrift extension for Yii2

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist RangelReale/yii2-nithrift "*"

or add

"RangelReale/yii2-nithrift": "*"

Minimum Requirement

Usage

The Thrift base classes must be accessible someway. I put the thrift/lib/php/lib path in my application root, and add this to composer.json:

"autoload": {
    "psr-0": {
        "Thrift": "lib"
    }
}

Create a directory named generated in your application root. Put your .thrift files into it, and generate the php wrapper on the default gen-php path, using command below.

thrift --gen php:server path/to/the/thrift/file

The files should be like this:

-- ROOT
    -- config
    -- controllers
    -- generated
        file1.thrift
        file2.thrift
        -- gen-php
            -- file1
            -- file2
    ...

In the component configuration add the thrift component, with the Thrift definitions.

return [
    'component' => [
        'thrift' => [
            'class' => 'RangelReale\nithrift\Thrift',
            'definitions' => [
                'shared',
                'tutorial',
            ],
        ]
    ]
]

Implement your Thrift handlers in separate class files, following the thrift documentation. I recommend using a services directory on the application root. There is no need to override or implement any other interface.

Your controller should extend \RangelReale\nithrift\Controller. You can use the custom \RangelReale\nithrift\Action class to implement the services.

class ApiController extends \RangelReale\nithrift\Controller
{
    public function actions()
    {
        return [
            'calculator' => [
                'class' => 'RangelReale\nithrift\Action',
                'handler' => 'app\services\CalculatorHandler',
                'processor' => 'tutorial\CalculatorProcessor',
            ]
        ];
    }
}

If you prefer, you can implement an inline action, and either return a \RangelReale\nithrift\Response object, or a processor object directly.

public function actionCalculator()
{
    $handler = new \app\services\CalculatorHandler();
    $processor = new \tutorial\CalculatorProcessor($handler);

    return new ThriftResponse($processor); // could be `return $processor;`
}

Author

Rangel Reale (rangelspam@gmail.com)