像PHP一样使PHP加入/ concat(.)

Aiv*_*ras 1 php

我坚持一个似乎很简单的命令连接,但无法解决它.

我有一个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();但也许有一种方法可以捕捉到什么.加入?

提前致谢

Gum*_*mbo 5

.运营商在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)