我坚持一个似乎很简单的命令连接,但无法解决它.
我有一个between()功能,它执行以下操作:
/**
* Checks if passed int is between $left and $right
* @param int $left lowest value
* @param int $right highest value
* @param int $value actual value
* @return bool is $value between $left and $right
*/
function between($left, $right, $value)
{
$value = intval($value);
return ( $value >= $left && $value <= $right );
}
Run Code Online (Sandbox Code Playgroud)
而且使用非常简单:
$int = 9;
var_dump( between( 6, 14, $int ) );//bool(true) Run Code Online (Sandbox Code Playgroud)
现在我想要实现的是:
$int = 9;
var_dump( $int.between( 6, 14 ) );//bool(true)
Run Code Online (Sandbox Code Playgroud)
它会更有意义,更容易理解.
任何想法我如何实现这一目标?
如果$int是一个扩展了comparisonFunctions的对象我可以做$int->between();但也许有一种方法可以捕捉到什么.加入?
提前致谢
该.运营商在JavaScript和PHP中有不同的含义:在Javascript中它用于属性访问,而PHP将其用于字符串连接.对于PHP中的属性访问,您可以使用->对象上的运算符(以及::类上的运算符).
因此,要获得相同的行为,您需要使用此类方法而不是标量值来获取对象值:
class Integer {
private $value;
public function __constructor($value) {
$this->value = intval($value);
}
public function between($min, $max) {
if (!($min instanceof Integer)) {
$min = new Integer($min);
}
if (!($max instanceof Integer)) {
$max = new Integer($max);
}
return $min->intValue() <= $this->value && $this->value <= $max->intValue();
}
public function intValue() {
return $this->value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
$int = new Integer(9);
var_dump($int->between(6, 14));
Run Code Online (Sandbox Code Playgroud)
但是,如果您只是正确命名函数并切换参数顺序,它可能已经足够了:
isInRange($val, $min, $max)
Run Code Online (Sandbox Code Playgroud)