hoa / math
此软件包已被废弃,不再维护。未建议替代软件包。
Hoa\Math 库。
1.17.05.16
2017-05-16 08:02 UTC
Requires
- hoa/compiler: ~3.0
- hoa/consistency: ~1.0
- hoa/exception: ~1.0
- hoa/iterator: ~2.0
- hoa/protocol: ~1.0
- hoa/zformat: ~1.0
Requires (Dev)
- hoa/test: ~2.0
This package is auto-updated.
Last update: 2021-09-20 08:31:28 UTC
README
Hoa 是一套 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和学术界之间的桥梁。
Hoa\Math
此库提供了数学运算的工具。
了解更多.
安装
使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/math
$ composer require hoa/math '~1.0'
有关更多安装说明,请参阅 源代码页面。
测试
在运行测试套件之前,必须安装开发依赖项
$ composer install
然后,运行所有测试套件
$ vendor/bin/hoa test:run
有关更多信息,请参阅 贡献者指南。
快速使用
我们提出快速了解一个功能:算术表达式的评估。
算术表达式的评估
hoa://Library/Math/Arithmetic.pp
描述了算术表达式的形式。因此,我们将使用处理语法的经典工作流程,涉及 Hoa\Compiler
库 和 Hoa\Math\Visitor\Arithmetic
类。
// 1. Load the compiler. $compiler = Hoa\Compiler\Llk::load( new Hoa\File\Read('hoa://Library/Math/Arithmetic.pp') ); // 2. Load the visitor, aka the “evaluator”. $visitor = new Hoa\Math\Visitor\Arithmetic(); // 3. Declare the expression. $expression = '1 / 2 / 3 + 4 * (5 * 2 - 6) * PI / avg(7, 8, 9)'; // 4. Parse the expression. $ast = $compiler->parse($expression); // 5. Evaluate. var_dump( $visitor->visit($ast) ); /** * Will output: * float(6.4498519738463) */ // Bonus. Print the AST of the expression. $dump = new Hoa\Compiler\Visitor\Dump(); echo $dump->visit($ast); /** * Will output: * > #addition * > > #division * > > > token(number, 1) * > > > #division * > > > > token(number, 2) * > > > > token(number, 3) * > > #multiplication * > > > token(number, 4) * > > > #multiplication * > > > > #group * > > > > > #substraction * > > > > > > #multiplication * > > > > > > > token(number, 5) * > > > > > > > token(number, 2) * > > > > > > token(number, 6) * > > > > #division * > > > > > token(constant, PI) * > > > > > #function * > > > > > > token(id, avg) * > > > > > > token(number, 7) * > > > > > > token(number, 8) * > > > > > > token(number, 9) */
我们可以通过 addFunction
和 addConstant
方法在访问器中添加函数和常量。因此,我们将添加具有 2 个参数的 rand
函数和设置为 42 的 ANSWER
常量
$visitor->addFunction('rand', function ($min, $max) { return mt_rand($min, $max); }); $visitor->addConstant('ANSWER', 42); $expression = 'rand(ANSWER / 2, ANSWER * 2)' var_dump( $visitor->visit($compiler->parse($expression)) ); /** * Could output: * int(53) */
文档
Hoa\Math
的黑客手册包含有关如何使用此库及其工作方式的详细信息。
要本地生成文档,请执行以下命令
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
更多文档可以在项目的网站上找到: hoa-project.net。
获取帮助
主要有两种方式可以获得帮助
- 在
#hoaproject
IRC 频道中, - 在 users.hoa-project.net 的论坛上。
贡献
您想贡献吗?谢谢!详细的 贡献者指南 解释了您需要知道的一切。
许可证
Hoa遵循新的BSD许可证(BSD-3-Clause)。请参阅LICENSE
获取详细信息。
相关项目
以下项目使用了这个库
- PSIH & PMSIpilot,PSIH是法国医疗保健行业商业智能解决方案的领先集成商,
- PHP Telegram Bot,基于官方Telegram Bot API的Telegram机器人。