misterspelik/rpn-calculator

1 2020-01-30 12:13 UTC

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 文件。以下是一些情况的包装器。

用例

  1. 使用可选的 --expression 参数。在这种情况下,应用程序计算结果并将其作为输出。退出代码是 0。
php index.php --expression="2 1 12 3 / - +"
  1. 作为逐步计算器使用。运行如下
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 种基本运算,添加更多操作将非常棒,可能包括所有操作:)