承接 fr-esco/php-dice 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fr-esco/php-dice

Composer 安装命令:

composer require fr-esco/php-dice

包简介

A generic RPG dice roller syntax and library.

README 文档

README

A generic RPG dice roller syntax and library.

Getting started

php-dice is designed to work out of the box. It means that installation requires minimal steps.

Download

php-dice can be installed using composer. Run following command to download and install php-dice:

composer require "fr-esco/php-dice"

Usage

As shown in index.php, once required the library, you can instantiate the parser:

$parser = new dice\Parser;

Then, you can parse your expression:

$result = $parser->parse($expression);

Later in your code, you can evaluate the parsed result, where the returned object can be inspected for debugging purposes:

$result->evaluate();

Finally, you can print out either a raw string representation of the parsed expression or its beautified version by running respectively:

echo $result;
# or
echo $result->render();

The final result is stored in its value property.

$result->value;

Exception Handling

You should always wrap the parsing phase in a try / catch block:

try {
    $result = $parser->parse($expression);
} catch (dice\SyntaxError $ex) {
    $stack = ['Syntax error:', $ex->getMessage(),
        'At line', $ex->grammarLine,
        'column', $ex->grammarColumn,
        'offset', $ex->grammarOffset];
    echo implode(' ', $stack);
}

Customization

You can also optionally provide a custom scope with additional functions or variables that should be evaluated:

$result = $parser->parse($expression, [
    'foo' => 2,
    'bar' => function () {
        return 3;
    },
], '\custom\namespace\Scope');

You can provide an associative array using as key any at least 2 characters long string that could appear in your expression, and as value any number or function to execute (see DefaultScope implementation for examples).

You can also specify your Scope Class, that has to extend dice\Scope.

Example

  • Expression (space-insensitive): d6 + foo * bar() / defaultSides + min(d12, 2d4) + rerollBelow(5, 3d6)
  • Render after evaluation: { 1d6 : [ 2 ] } + { foo : 2 } * { bar ( ): 3 } / { defaultSides : 6 } + { min ( { 1d12 : [ 10 ] }, { 2d4 : [ 1, 2 ] } ): 3 } + { rerollBelow ( 5, { 3d6 : [ 6, 6, 4 ] } ): 18 }
  • Stringified version: 1d6 + foo * bar() / defaultSides + min(1d12, 2d4) + rerollBelow(5, 3d6)
  • Value (rolled): 24

Development

Technology Stack

The grammar is built with PEG.js. Its PHP version is generated by php-pegjs.

Customization

If you need to customize the grammar/dice.pegphp, you can regenerate src/Parser via Javascript:

# Install node modules
npm install

# Build dice\Parser for PHP
npm run build

Visual Test

Serve index.php with your favourite webserver and browse to http://localhost/php-dice/index.php.

You can enter the expression to parse in the textbox and submit the form by clicking on the "Roll" button.

Details and results will be shown below.

License

php-dice is released under the MIT License. See the bundled LICENSE.md for details.

统计信息

  • 总下载量: 376
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-05-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固