misterspelik / rpn-calculator
RPN 计算器
1
2020-01-30 12:13 UTC
Requires
- php: >=7.1.0
This package is not auto-updated.
Last update: 2024-09-17 04:35:11 UTC
README
这是 RPN 计算器的 PHP 实现。
解决方案描述
该包包含多个类,并设计为未来用作 Composer 包。概念是拥有 Rpn\Calculator 类,该类设计为 Singleton,以便在可能的不同部分的应用程序中使用时保持相同的实例。它注入了如下依赖项:
- 处理输入
- 验证
- 处理待计算数字栈
此外,还有一个独立的 Rpn\Cli 类,以便作为 CLI 应用程序的一部分使用。
安装
由于此计划通过 composer 使用,请克隆此存储库并运行
composer install
CLI RPN 计算器 - 使用方法
为了使用 CLI 模式,请使用 index.php 文件。以下是一些情况的包装器。
用例
- 使用可选的
--expression
参数。在这种情况下,应用程序计算结果并将其作为输出。退出代码是 0。
php index.php --expression="2 1 12 3 / - +"
- 作为逐步计算器使用。运行如下
php index.php
然后逐步提供操作数和运算符
> 5 5 > 8 8 > + 13 >r >2 1 12 3 / - + -1 >
逐步模式中的可用命令
- q - 退出应用程序
- r - 重置计算器的状态,可以在需要重置计算时使用
- h - 打印有关可使用命令的提示
待办事项
鉴于这是一个快速解决方案,它没有很好地组织。希望这将在未来得到解决。以下列出的项目需要添加到包中才能完成。显然,需要更多时间来完成这些工作,并希望这能够在未来完成。或者,欢迎您进行分支并添加 :)
异常
目前,Rpn\Validator 如果有错误,只是输出消息。当然,这是硬编码的,需要重构为抛出异常。异常类可能的放置位置是 src/Exceptions 下的 Rpn\Exceptions 命名空间。
在此项下,我假设需要添加 throw 和 catch(在客户端代码中)以正确工作。
测试
此计算器可以通过 phpUnit
自动测试,顺便说一句,这也是添加 composer.json 的原因之一。在未来,可以添加 require-dev
部分以包含 phpunit。
添加更多操作
鉴于仅支持 4 种基本运算,添加更多操作将非常棒,可能包括所有操作:)