flare/math

该包的最新版本(dev-master)没有可用的许可信息。

dev-master 2016-02-03 22:47 UTC

This package is not auto-updated.

Last update: 2024-09-24 05:31:29 UTC


README

为 Laravel 4 开发的数学包。

安装

在 Laravel 4 中安装 math 最简单的方法是使用 Composer。将以下内容添加到您的 composer.json 文件中

"flare/math": "*"

添加后,运行 composer update 命令,以下载数学包并将其放置在您的 vendor 文件夹中。

注册服务提供者

使用 Composer 下载数学包后,将以下内容添加到您的 app.php 配置文件中的 providers 数组

'Flare\Math\MathServiceProvider',

注册外观(可选)

要注册数学包的外观,请将以下条目添加到您的 app.php 配置文件中的 aliases

'Math'			  => 'Flare\Math\Facades\Math',

完成此操作后,您应该已经准备好开始使用!祝您享受!

用法

安装并注册服务提供者后,您可以通过引用 Math 外观来使用数学库

// app/routes.php

Route::get('/', function()
{

	// Calculate the absolute value of -1
	$result = Math::abs(-1);

});

Math::solve() 函数

数学包通过 Math 外观提供了一个 solve() 函数。此函数可用于解决用户输入的方程或表达式。

示例

// app/routes.php

Route::get('/', function()
{

	// Create a new function f(x) = 2 + x
	Math::solve('f(x) = 2 + x');

	// Reference our previous function and pass in 23.
	$result = Math::solve('f(23)');

	// Result is equal to 25.
	echo $result;

});

我们还可以使用以下列出的所有通用数学函数

// app/routes.php

Route::get('/', function()
{

	// Outputs 9.3326215443944E+157
	echo Math::solve('abs(factorial(100))');

});

通用数学函数

数学包目前提供了以下函数,来自 ExecutionEngineInterface,并通过 Math 外观通过 Math 对象访问。

  • abs($number) - 返回一个数的绝对值。
  • acos($number) - 返回一个数的反余弦。
  • asin($number) - 返回一个数的反正弦。
  • atan($number) - 返回一个数的反正切。
  • atan2($x, $y) - 计算两个变量的反正切。
  • ceiling($number) - 返回大于或等于指定数值的最小整数。
  • cos($angle) - 返回指定角度的余弦值。
  • cosh($angle) - 返回角度的双曲余弦。
  • exp($number) - 返回 e 的指定幂。
  • floor($number) - 返回小于或等于指定数值的最大整数。
  • log($number, $base = M_E) - 返回指定底数的数值的对数。
  • log10($number) - 返回数值的 10 为底的对数。
  • max(array $numbers) - 返回数值数组中的最大值。
  • min(array $numbers) - 返回数值数组中的最小值。
  • pow($base, $exponent) - 返回基数指数。
  • round($number, $precision = 0, $mode = PHP_ROUND_HALF_UP) - 将数值四舍五入到最接近的值。
  • sign($number) - 返回表示数值符号的值。
  • sin($angle) - 返回指定角度的正弦值。
  • sinh($angle) - 返回角度的双曲正弦。
  • sqrt($number) - 返回给定数的平方根。
  • tan($angle) - 返回指定角度的正切。
  • tanh($angle) - 返回角度的双曲正切。
  • truncate($number) - 返回给定数的整数部分。
  • add($numberOne, $numberTwo) - 返回两个数的和。
  • subtract($numberOne, $numberTwo) - 返回两个数的差。
  • multiply($numberOne, $numberTwo) - 返回两个数的乘积。
  • divide($numberOne, $numberTwo) - 返回两个数的商。
  • mod($numberOne, $numberTwo) - 返回两个数的余数。
  • factorial($number) - 计算一个数的阶乘。

驱动程序

ExecutionEngineInterface

数学包允许你编写自己的驱动程序,以改变其执行实际数学操作的方式。例如,你可以使用 BCMathGMP 数学扩展中的函数创建一个新的驱动程序。只需创建一个实现 Flare\Math\ExecutionEngineInterface 协议的新驱动程序。

存在一个默认的驱动程序,它使用系统默认的数学操作:Flare\Math\Drivers\MathExecutionEngine

如果你创建了一个新的驱动程序,你可以像这样将其注册到 IoC 中


class MyNewEngine implements \Flare\Math\ExecutionEngineInterface {
	
	// You will have to implement quite a few methods.

}

// app/routes.php

App::bind('ExecutionEngineInterface', new MyNewEngine());

之后,数学包将现在使用你的驱动程序实现。

SolutionEngineInterface

数学包定义了一个代码协议 Flare\Math\SolutionEngineInterface。你的实现将允许你改变 Math::solve($expression) 函数的行为。

例如,你可以编写一个驱动程序,通过调用 WolframAlpha API 为用户输入的表达式提供答案。

存在一个默认实现,可以在 Flare\Math\Drivers\EvalMathDriver 中找到。